正则表达式只导致最后一次出现

时间:2014-07-31 14:04:56

标签: javascript regex

我的正则表达式字符串/(.)(?:(.)(?!.*\2))+\1/g是找到两个字符,它们之间没有重复的字符。例如,“aba”或“abcadea”有效,而“abcba”无效,因为b在两个a中存在两次。基本上a是作为边界的,不应该在其中重复任何字符。

我遇到的问题是它没有正确识别出现这种情况的所有事件。举个例子:

var s = "abababab";
s.match(/(.)(?:(.)(?!.*\2))+\1/g)
["bab"] //aba is also a valid occurrence

var s = "aba"
s.match(/(.)(?:(.)(?!.*\2))+\1/g)
["aba"] //it works on the string by itself

我认为另一个与之相关的问题是它只找到最短的匹配,例如:

var s = "abcadefa";
s.match(/(.)(?:(.)(?!.*\2))+\1/g)
["abca"] //should also result abcadefa as a valid string

我无法在我的正则表达式查询中找到错误的位置。任何帮助都会很棒!

0 个答案:

没有答案