正则表达式允许<和>

时间:2015-07-24 20:28:22

标签: javascript regex

有谁可以告诉我为什么这个正则表达式允许<>

function IsValidPassword(password) {
    var regex = /^[A-Za-z0-9^\~^\!@/#^\$^\%&^\*+-_()]*$/; /* AlphaNumerics.  ~ (Tilde) (All "Shifts" 1-0)  underscore plus and minus */
    return regex.test(password);
}

我的目标是

  • 字母数字。 (上下)。
  • 代字号
  • &#34; SHIFT&#34;中的所有内容区域,键盘上1-0。
  • + - _

2 个答案:

答案 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~!@#$%^&*()+\-_]*$/