要檢查字符串沒有連續重複3次以上(任何一種,甚至是新線)的字符:
/^(?!.*(.)\1{2})/s
您還可以檢查輸入字符串沒有與此正則表達式匹配。在這種情況下,你也可以知道連續重複3次或更多的字符。請注意,這與上面的完全相同,只是在負面預測(?!pattern)
內的正則表達式被取出。
/^.*(.)\1{2}/s
如果你想添加驗證該字符串只包含來自[a-z]
字符,而您認爲aaA
無效:
/^(?!.*(.)\1{2})[a-z]+$/i
正如你可以看到i
標誌(不區分大小寫)影響如何將捕獲的文本與當前輸入進行比較。
如果要允許空字符串通過,請將+
更改爲*
。
如果你要考慮aaA
是有效的,並且要允許大寫和小寫:
/^(?!.*(.)\1{2})[A-Za-z]+$/
第一眼看上去,它似乎是一樣的前一個,但由於沒有i
標誌,所捕獲的文本不會受到不區分大小寫的匹配。
下面是失敗的答案,你可以忽略它,但你可以閱讀它的樂趣。
您可以使用此正則表達式來檢查字符串沒有3次重複字符(任何一種,甚至是新線)。
/^(?!.*(.)(?:.*\1){2})/s
您還可以檢查輸入字符串是否與此正則表達式沒有任何匹配。在這種情況下,您也可以知道重複的字符大於或等於3次。請注意,這與上面的完全相同,只是在負面預測(?!pattern)
內的正則表達式被取出。
/^.*(.)(?:.*\1){2}/s
如果你想添加驗證該字符串只包含來自[a-z]
字符,而您認爲aaA
無效:
/^(?!.*(.)(?:.*\1){2})[a-z]+$/i
正如你可以看到i
標誌(不區分大小寫)影響如何將捕獲的文本與當前輸入進行比較。
如果你要考慮aaA
是有效的,並且要允許大寫和小寫:
/^(?!.*(.)(?:.*\1){2})[A-Za-z]+$/
第一眼看上去,它似乎是一樣的前一個,但由於沒有i
標誌,所捕獲的文本不會受到不區分大小寫的匹配。
您使用哪種語言? –
PCRE RegExp風味,在PHP中使用。 –
我實際上不明白爲什麼'/ ^([a-z])\ 1 {1,2} $/i'匹配'aaa'。字符串的長度爲3個字符,比量化後的參考長。 –