【发布时间】:2014-03-22 04:50:23
【问题描述】:
如何编写一个正则表达式,其中 x 是一个字符串,其字符为 a、b、c,但没有两个连续字符相同
例如
abcacb 是真的
acbaac 是假的
【问题讨论】:
标签: regex
如何编写一个正则表达式,其中 x 是一个字符串,其字符为 a、b、c,但没有两个连续字符相同
例如
abcacb 是真的
acbaac 是假的
【问题讨论】:
标签: regex
^(?!.*(.)\1)[abc]+$ 如果您完全遵循原始问题,则可以使用。但是,这 不 工作/检查字符 a/b/c 的多个“单词”,即。 "abc cba"。
它的工作方式是通过利用前瞻内的捕获组断言任何字符不跟随其自身,并且整个字符串仅由字符“a”、“b”或“c”组成。
【讨论】:
由于字符数有限,您可以在前瞻中无需反向引用:
^(?!.*(aa|bb|cc)[abc]*$
但我更喜欢tenub的回答:)
【讨论】:
如果您打算将此正则表达式用作您可能正在创建的一些更大的正则表达式的一部分,请选择其中任何一个(两者都做相同的工作但不同)。
简而言之,这是可重复使用的。复制和粘贴,它会在不干扰周围存在的任何正则表达式的情况下完成工作。
以我的拙见,@tenub 和 @Bohemian 中提供的正则表达式不可重复使用,这可能会导致错误。
注意:空字符串 ("") 将通过这 2 个正则表达式。如果您不想这样做,请从正则表达式中删除 ?。
【讨论】:
^ 和 $。 ^ 表示字符串的开头,$ 表示字符串的结尾。