[英]How to use ( ) [ ] braces to allow as special characters in password regular Expression?
我在我的項目中對密碼字段使用以下正則表達式:
/^(?=.*\d)(?=.*[~!@#$%^&*)(_+-:[}="`])(?=.*[a-z])(?=.*[A-Z]).{8,}$/
我的要求是至少允許
1 大寫
1 小寫
1 個
1 特殊字符
它應該允許`~!@#$%^&*)(_+-:[}=" 特殊字符。如果我輸入其他字符,它不應該允許那些。
但它允許其他字符,如|\\
等。
我對正則表達式了解不多。 我哪里錯了?
問題是在你的字符類中放置一個未轉義的-
就在+
之后,它位於中間,就像+
即0x2b
和:
即0x3a
之間的范圍。 因此,允許此范圍內的所有字符。
您可以像這樣移動-
到字符類的末尾或開頭:
/^(?=.*\d)(?=.*[~!@#$%^&*)(_+:[}="`-])(?=.*[a-z])(?=.*[A-Z])[~!@#$%^&*)(+:[}="`\w-]{8,}$/
同樣重要的是最后將 DOT(任何字符)更改為允許的字符集,如我上面所示。 正則表達式演示
無論您不想允許什么,只需將它們放在帶有帽子符號(^)的方括號([])中
例子 :
[^|][^/]
這將不允許這些字符。
嘗試這個 :
Gt%:_=yh^|\5%3f
您需要轉義正則表達式特定的字符 ($,&,^,*,+,?,/,|,),(,],[,},{):
^(?=.*\d)(?=.*[\~\!\@\#\$\%\^\&\*\)\(\_\+\-\:\[\}\=\"\`])(?=.*[a-z])(?=.*[A-Z]).{8,}$
為了安全起見,我通常只是轉義所有標點符號,但沒有必要轉義 #、=、:、
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.