我有一個客戶端要求,當選擇密碼時,用戶不能在密碼字符串中使用多於三個連續的字符或數字。例如:Java - 正則表達式匹配字符串中的連續數字或字符
abc ->> allowed
abcd ->> not allowed
wxy ->> allowed
wxyz ->> not allowed
stu ->> allowed
stuv ->> not allowed
並且具體是ab,bc,kl,op這些是允許的。我的意思是連續的數字或字符允許長度爲三。任何超過三個長度(連續的)都是不允許的。像12345,123456,456789,abcdef,pqrstuv - 這些都是不允許的。
同樣的數字。示例:
123 ->> allowed
1234 ->> not allowed
456 ->> allowed
4567 ->> not allowed
345 ->> allowed
3456 ->> not allowed
和12,45,78,89這些是允許的。
用正則表達式可以實現嗎?如果是這樣,那麼需要一點幫助。
我曾嘗試以下的正則表達式:
^(?:(?!(?:abcd|bcde|cdef|defg|efgh|fghi|ghij|hijk|ijkl|jklm|klmn|lmno|mnop|nopq|opqr|pqrs|qrst|rstu|stuv|tuvw|uvwx|vwxy|wxyz|(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)\1{3})).)*
但這個表達式沒有給出正確的出來放。就像它找到了字符串「abc」和「acm」的匹配。
爲了測試我的正則表達式我使用正則表達式如下測試:
http://www.regexplanet.com/advanced/java/index.html
絕對不會用正則表達式去,作爲你基本上要硬編碼序列,就像你的例子說明。相反,我會解析整個String來獲取字符代碼點增量,並設置一個計數器,當這個增量爲一個連續實例的x個數量時,就會設置一個計數器。 – Mena
http://stackoverflow.com/questions/29509483/how-to-perform-and-operator-in-a-c-sharp-regex – nhahtdh
只是爲了確定,是否允許「abef」? – Pshemo