簡體   English   中英

如何使用 ( ) [ ] 大括號允許作為密碼正則表達式中的特殊字符?

[英]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.

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