我的正则表达式字符串/(.)(?:(.)(?!.*\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
我无法在我的正则表达式查询中找到错误的位置。任何帮助都会很棒!