关于顺序模式匹配的RegExp JS

时间:2015-08-22 19:43:00

标签: regex

P.S: - >我知道有一个简单的解决方案可以满足我的需求,我可以这样做,但是, - 我正在寻找一个"差异"学习和解的解决方案挑战缘故。所以,这只是以较不传统的方式解决算法。

我正在努力解决一个算法,并认为我的一切运作良好,但一个用例失败了。那是因为我正在动态构建一个正则表达式 - 现在,我的问题是这个。

我需要按顺序匹配字母直到一个字母不匹配,然后我只是"匹配"什么做了顺序匹配。

所以...让我说我匹配这个:

"zaazizz"

with this: /\bz[a]?[z]?/ 

"zizzi".match(/\bz[z]?[i]?/)

目前,它与a:[zi]匹配,但匹配应该只是[z]

zzi只匹配" z"来自" zizzi"的前面,按顺序zzi - 我现在正在使用[z]?等......所以它是可选的...但我真正需要的是顺序匹配..我只得到" zi"如果从前面,它匹配:zzi per my regex ....所以,某种前瞻或?我试过了?=和!=没有运气。

1 个答案:

答案 0 :(得分:1)

我仍然认为非正则表达式方法最好。看看下面的JS代码:

var match = "abcdef";
var input = "abcxdef";

var mArray = match.split("");
var inArray = input.split("");

var max = Math.min(mArray.length, inArray.length) - 1;

for (var i = 0; i < max; i++) {
    if (mArray[i] != inArray[i]) { break; }
}

input.substring(0, i);

匹配是要部分匹配的字符串,输入是输入,input.substring(0, i)是匹配部分的结果。您可以随时更改匹配。