簡體   English   中英

正則表達式不允許某些特殊字符

[英]Regex not allowing certain special characters

我有以下正則表達式,不允許某些特殊字符:

if (testString.match(/[`~,.<>;':"\/\[\]\|{}()-=_+]/)){    
    alert("password not valid");
}
else
{
    alert("password valid");
}

這很有效。 如果該正則表達式不包含括號內的任何特殊字符(~,.<>;':"\\/\\[\\]\\|{}()-=_+)則會接受該密碼。

我的問題是它也不允許我輸入奇怪的數字。

我錯過了什么? 提前致謝!

這是一個示例:

的jsfiddle

你有一個字符范圍:) )-=包括之間的所有ASCII字符)= (包括數字)。 移動-到類的末尾或轉義它:

/[`~,.<>;':"\/\[\]\|{}()=_+-]/

此外,您不需要轉義所有這些字符:

/[`~,.<>;':"/[\]|{}()=_+-]/

請注意,在您的情況下,使用test而不是match可能就足夠了:

if (/[`~,.<>;':"/[\]|{}()=_+-]/.test(testString))){
    ...

test返回一個布爾值(這是你所需要的),而match返回一個包含所有捕獲組的數組(無論如何你都要丟棄)。

請注意,正如Daren Thomas在評論中指出的那樣,您應該決定要允許哪些字符。 因為當前的方法不會處理各種奇怪的Unicode字符,而是抱怨像_這樣的一些相當標准的字符。 要創建白名單,您可以簡單地反轉字符類和條件:

if (!/[^a-zA-Z0-9]/.test(testString)) {
   ...

並包括您想要允許的所有字符。

暫無
暫無

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

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