[英]Regex no two consecutive characters are the same
如何編寫正則表達式,其中 x 是一個字符串,其字符為 a、b、c 但沒有兩個連續字符相同
例如
abcacb 是真的
acbaac 是假的
如果您完全按照原始問題, ^(?!.*(.)\\1)[abc]+$
有效。 然而,這不起作用 /檢查字符的多個“改為” A / B / C,即。 “abc cba”。
它的工作方式是斷言任何字符都不會通過利用前瞻中的捕獲組來跟隨它,並且整個字符串只包含字符“a”,“b”或“c”。
由於字符數量有限,您可以在前面沒有后退參考的情況下離開:
^(?!.*(aa|bb|cc)[abc]*$
但我更喜歡tenub的答案:)
除了已經提到的兩個解決方案之外的其他解決方案:
使用負向后視: ^((a|b|c)(?<!(aa|bb|cc)))*$
使用負前瞻: ^((?!(aa|bb|cc))(a|b|c))*$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.