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 ....所以,某种前瞻或?我试过了?=和!=没有运气。
答案 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)
是匹配部分的结果。您可以随时更改匹配。