目前我有以下正則表達式模式:正則表達式模式小寫和大寫和數字或特殊字符
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,}
其是至少一個小寫,一個大寫,一個數字和一個特殊字符。 如何製作特殊字符可選?
目前我有以下正則表達式模式:正則表達式模式小寫和大寫和數字或特殊字符
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,}
其是至少一個小寫,一個大寫,一個數字和一個特殊字符。 如何製作特殊字符可選?
看起來像所有你需要的是一個?
後[[email protected]$!%*?&]
你的正則表達式應該是^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&]?)[A-Za-z\[email protected]$!%*?&]{8,}
'(?=。* [$ @ $!%*?&] ?)'可以縮短爲。 (就是什麼都沒有。) – melpomene
@melpomene同意。整個'(?=。* [$ @ $!%*?&])'可以被刪除,因爲它是現在可選的積極向前看。 '。*'什麼都不能匹配,'[$ @ $!%*?&]?'什麼都不能匹配,所以整個預測都是毫無意義的'(?=。*)'。好點子。 –
我怎樣才能讓特殊字符可選?
只是刪除先行檢查特殊字符:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\[email protected]$!%*?&]{8,}$
而且它是安全使用端錨$
在你的正則表達式。
@someangular:這工作了嗎? – anubhava
你能告訴我們輸入字符串和相關預期輸出的例子嗎? – Niitaku
順便提一下,特殊字符列表中的重複'$'是多餘的。您可以使用'[$ @!%*?&]'和[A-Za-z \ d $ @!%*?&'' –