Regex 正则表达式模式,用于匹配不包含任何2个连续重复字符的字符串

Regex 正则表达式模式,用于匹配不包含任何2个连续重复字符的字符串,regex,regex-negation,regex-lookarounds,Regex,Regex Negation,Regex Lookarounds,我可以很容易地编写正则表达式来匹配包含2个连续重复字符的字符串: /(\w)\1/ 我该怎么做这个的补充呢?我想匹配没有2个连续重复字符的字符串。我尝试了以下几种变体,但没有成功: /(\w)[^\1]/ ;doesn't work as hoped /(?!(\w)\1)/ ;looks ahead, but some portion of the string will match /(\w)(?!\1)/ ;again, some portion of the string will m

我可以很容易地编写正则表达式来匹配包含2个连续重复字符的字符串:

/(\w)\1/
我该怎么做这个的补充呢?我想匹配没有2个连续重复字符的字符串。我尝试了以下几种变体,但没有成功:

/(\w)[^\1]/ ;doesn't work as hoped
/(?!(\w)\1)/ ;looks ahead, but some portion of the string will match
/(\w)(?!\1)/ ;again, some portion of the string will match

我不想用任何特定于语言/平台的方法来否定正则表达式。我想要一种简单的方法来实现这一点。

下面的正则表达式将匹配没有任何重复字符的字符串

^(?!.*(\w)\1).*
(?!.*(\w)\1)
负前瞻,它断言要匹配的字符串不包含任何重复字符
*(\w)\1
将匹配中间或开头或结尾有重复字符的字符串<代码>^(?。*(\w)\1)匹配所有起始边界,但具有重复字符的边界除外。下面的
*
匹配该行中存在的所有字符。注意,这也匹配空字符串。如果不想匹配空行,则最后将
*
更改为
+

请注意,
^(?)(\w)\1)
仅在字符串或行的开头检查重复字符


Lookahead和Lookahead统称为零长度断言,就像行的开始和结束一样。它们不使用字符串中的字符,而只声明匹配是否可能。Lookaround允许您创建没有正则表达式无法创建的正则表达式,或者如果没有它们,正则表达式将变得非常冗长。

尝试
^(?。*(\w)\1)。*
发布一些示例以及预期的输出?@AvinashRaj-这很有效!我不太清楚它为什么起作用。。。我想我需要仔细阅读一下长相,因为我显然不完全理解它们。写下你的答案。