有谁可以告诉我为什么这个正则表达式允许<
和>
?
function IsValidPassword(password) {
var regex = /^[A-Za-z0-9^\~^\!@/#^\$^\%&^\*+-_()]*$/; /* AlphaNumerics. ~ (Tilde) (All "Shifts" 1-0) underscore plus and minus */
return regex.test(password);
}
我的目标是
答案 0 :(得分:7)
/^[A-Za-z0-9^\~^\!@/#^\$^\%&^\*+-_()]*$/
^^^--- plus to underscore
<
和>
属于该范围:
+ -> ascii(43)
< -> ascii(60)
> -> ascii(62)
_ -> ascii(95)
+-_
范围恰好也包含整个大写字母,因此您可以从模式中删除A-Z
,它仍然可以正常工作。
答案 1 :(得分:1)
这是因为当您放置第二个-
(打算检查文字-
)时,它实际上代表了+
和(
之间的范围,包括<
和>
。
您只需要转义-
(另请注意您的正则表达式可以简化):
/^[A-Za-z0-9~!@#$%^&*()+\-_]*$/