5 regex regex-negation ecmascript-6
我一直在玩正则表达式高尔夫,并确定了一个正则表达式,其中包含了我不应该匹配的所有单词以及我应该匹配的单词.我的想法是,我可以简单地否定正则表达式,然后反过来(包括我应该匹配的所有单词,而不包括其他单词).
我提出的正则表达式(\w)(\w)\2\1匹配任何带有模式的东西abba,所以我认为使用负面外观(?!(\w)(\w)\2\1)会使我与任何不符合模式的东西相匹配,abba但是现在它只是突出显示所有内容,如果你想尝试它,这里是URL:http:// regex.alf.nu/4
在我看来,您想排除包含这些重复符号的匹配字符串。因此,您需要在字符前添加\w*(0 个或多个单词字符)以测试重复。
使用
^(?!\w*(\w)(\w)\2\1).*
^^^
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示。
因此,(?!\w*(\w)(\w)\2\1)先行在字符串的开头执行以下检查:如果有 0 个以上字母数字/下划线字符,后跟 1 和 2 个字符,后跟第二个和第一个捕获的字符,则不返回任何匹配项(匹配失败)。
.*如果您不打算匹配文本(即,如果您只是检查是否存在匹配),则不需要该部分。但是,如果您想排除匹配空字符串,只需使用.+而不是.*(+匹配量化子模式的 1 次或多次出现)。