[英]Regex not allowing certain special characters
我有以下正則表達式,不允許某些特殊字符:
if (testString.match(/[`~,.<>;':"\/\[\]\|{}()-=_+]/)){
alert("password not valid");
}
else
{
alert("password valid");
}
這很有效。 如果該正則表達式不包含括號內的任何特殊字符(~,.<>;':"\\/\\[\\]\\|{}()-=_+)
則會接受該密碼。
我的問題是它也不允許我輸入奇怪的數字。
我錯過了什么? 提前致謝!
這是一個示例:
你有一個字符范圍:) )-=
包括之間的所有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.