[英]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])(?=.*[@#$%^&+=.]).*$
這匹配:
... 但不是:
試試這個正則表達式:
\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.