[英]Regex for "Does not contain four or more repeated characters"
我對正則表達式的經驗有限,我一直在閱讀有關否定和否定前瞻等的各種教程和帖子,但似乎沒有什么與我的情況完全相符。
我正在嘗試在ASP.NET MVC3
為密碼復雜性創建一個屬性。 部分驗證包括最少數量的重復字符。 對於當前項目,限制為 3,但我想概括一下。
最初,我使用@"(.)\\1{3,}"
來測試 4 個或更多重復字符,然后否定該結果。 我現在不能這樣做,因為我需要創建一個ModelClientValidationRegexRule
對象,它只會產生積極的結果。 因此,否定必須在正則表達式本身內部完成。 我嘗試使用負前瞻的每一種方式都失敗了,例如@".*(?!(.)\\1{3,})"
。
有任何想法嗎?
扭轉問題:一個字符最多可以跟 3 個相同的字符。 然后它必須跟着別的東西。 最后,整個字符串必須由這樣的序列組成。 在 perl 風格中:
^((.)\2{0,3}(?!\2))*$
您需要將.*
放在前瞻中:
(?!.*?(.)\1{3,})
你這樣做的方式, .*
消耗整個字符串,然后前瞻斷言在字符串末尾之后沒有四個相同的字符,這當然總是正確的。
我在我的前瞻中使用了一個非貪婪的星,因為它看起來更合適,但貪婪也可以工作——它只需要在前瞻內。
我假設這只是幾個前瞻之一,這是在正則表達式中驗證密碼強度的常用技術。 順便說一下,雖然regex-negation是合適的,但如果你也使用了regex標簽,你會更快地得到更多對你的問題的回答。
我認為,使用這個正則表達式.*(.).*\\1+.*
來匹配現有的重復字符。 但對於四個,取決於你。
祝你好運!
在組中查找字符然后匹配重復
(.).*(\1{3,})
我使用簡單的^(.)(?!\\1\\1){8,}$
表示 8 個或更多字符,並且沒有任何重復超過兩次的字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.