簡體   English   中英

密碼正則表達式(客戶端 javascript)

[英]Password Regex (client side javascript)

我需要一個符合以下標准的正則表達式:

至少 7 個字母數字字符和 1 個特殊字符

我用這個:

^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$!%^&+=]).*$

如果我輸入 Password1,它工作正常。 但不適用於 PASSWORD1!。

不適用於:Stmaryshsp1tal!

我正在使用 Jquery 驗證插件,我在其中指定了正則表達式。

當我使用正則表達式驗證器並指定以下正則表達式時:

^.*(?=.{7,})(?=(.*\W){1,}).*$

它可以完美運行,沒有任何問題。 當我在 Jquery 驗證中設置此正則表達式時,我使用它不起作用。

請問有人可以對此有所了解嗎? 我想了解為什么我的第一個正則表達式不起作用。

(?=.\d)(?=.[a-z])

嘗試在同一位置匹配數字和字母數字字符。 請記住, (?=... )不包含任何內容。

你想要的可能是:

^(?=.*\W)(?=(.*\w){7})

這與確認您的字符串同時匹配^.*\W (至少一個特殊字符)和^(.*\w){7}) (7 個字母數字字符)完全相同。請注意,如果有更多字符,它也匹配.

作為快速測試正則表達式的好工具,我建議http://regexpal.com/ (無關系;))。 有時簡化你的表達會有很大幫助。

那么您可能想嘗試類似 ^[a-zA-Z0-9@#$,%^&+=]{7,}$

更新 2現在包括數字

^.*(?=.{7,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$%^&+=.]).*$

這匹配:

  • Stmarysh3sptal,, password1,, PASSWORD1P!!!!!!@#^^ASSWORD1, 122ss121a212!!

... 但不是:

  • Password1, PASSWORD1PASSWORD1, PASSWORD,, Password!, 1221121212!! ETC

試試這個正則表達式:

\S*[@#$!%^&+=]+\S*(?<=\S{7,})

EDIT3:好的,這是最后一次編輯;)。

這也將匹配其他特殊字符。 因此,如果您不想限制有效字符的數量,請將\S更改為所有有效字符的范圍。

這是正則表達式,我認為它可以處理所有可能的組合..

^(?=.{7,})\w*[.@#$!%^&+=]+(\w*[.@#$!%^&+=]*)*$

這是此正則表達式的鏈接, http://regexr.com?2tuh5

它匹配Password1! 但不是PASSWORD1! 是這個條款:

(?=.*[a-z])

這需要密碼中至少有一個小寫字母。 該模式表示密碼長度必須至少為 7 個字符,並且包含大小寫字母、至少一個數字和至少一個@#$!%^&+= PASSWORD1! 失敗,因為其中沒有小寫字母。

第二個模式接受PASSWORD1! 因為這是一個非常非常弱的密碼要求。 它所要求的只是密碼是 7+ 個字符並且其中至少有一個特殊字符(除了_ )。 順便說一下, {1,}是不必要的。

如果我是你,我會避免削弱密碼並保持原樣。 如果出於某種原因我想允許全小寫或全大寫密碼,我只需將其更改為

^(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$!%^&+=]).{7,}$

...因此不會比我必須的那樣削弱密碼要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM