什麼是正則表達式,以確保給定的字符串至少包含以下每個類別中的一個字符。正則表達式確保字符串至少包含一個小寫字母,大寫字母,數字和符號
- 小寫字符
- 大寫字符
- 位數
- 符號
我知道各組分別[a-z]
,[A-Z]
,\d
和_|[^\w]
模式(我讓他們正確的,沒」我呢?)。
但是,如何將它們結合起來,以確保字符串包含所有這些以任何順序?
什麼是正則表達式,以確保給定的字符串至少包含以下每個類別中的一個字符。正則表達式確保字符串至少包含一個小寫字母,大寫字母,數字和符號
我知道各組分別[a-z]
,[A-Z]
,\d
和_|[^\w]
模式(我讓他們正確的,沒」我呢?)。
但是,如何將它們結合起來,以確保字符串包含所有這些以任何順序?
如果你需要一個單一的正則表達式,請嘗試:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$
的簡短解釋:
^ // the start of the string
(?=.*[a-z]) // use positive look ahead to see if at least one lower case letter exists
(?=.*[A-Z]) // use positive look ahead to see if at least one upper case letter exists
(?=.*\d) // use positive look ahead to see if at least one digit exists
(?=.*[_\W]) // use positive look ahead to see if at least one underscore or non-word character exists
.+ // gobble up the entire string
$ // the end of the string
和我一起SilentGhost同意,[_\W]
可能會有點廣闊。我會用這樣的字符集替換它:[[email protected]#$%^&*.,?]
(隨意添加更多當然!)
您可以分別匹配這三個組,並確保它們都存在。另外,似乎有點太寬泛,但如果這是你想要的,你可能想用\W
替換它。
謝謝。我不知道\ W。只是看它,發現它匹配Not Word。 \ W和[\ W]之間是否有區別? [\ W]是多餘的嗎? – Amarghosh 2009-10-14 04:29:13
@Amarghosh,是的,'\ W'和'[\ W]'結果相同。 – 2009-10-14 05:31:09
巴特基爾斯,你的正則表達式有幾個問題。最好的辦法是這樣的:
(.*[a-z].*) // For lower cases
(.*[A-Z].*) // For upper cases
(.*\d.*) // For digits
這樣你就可以搜索,無論是在開始,結束還是在中間。在你有我有很多麻煩複雜的密碼。
什麼平臺/正則表達式? Bart的回答是對的,但是前瞻斷言在JavaScript中不可靠,例如。 – bobince 2009-10-13 12:31:18
無處不在 - 我正在學習正則表達式。有沒有可以在JavaScript中使用的替代方法? – Amarghosh 2009-10-14 08:22:44
@bobince嘿,我想知道爲什麼前瞻斷言在Javascript中不可靠。有沒有關於這方面的寫作? – 2013-10-07 21:18:35