如何匹配Javascript中的符号?

时间:2012-06-12 02:19:59

标签: javascript regex

我正在设置密码验证屏幕,要求至少有一个符号,例如下面列出的符号。

我应该如何逃避它们,以便它在Javascript下正常工作?

//validate symbol
if (pswd.match(/`~!@#$%^&*()_+=-\][{}\;':"<>?,/./)) {
    $('#symbol').removeClass('invalid').addClass('valid');
} else {
    $('#symbol').removeClass('valid').addClass('invalid');
}

3 个答案:

答案 0 :(得分:2)

请改用:

if (pswd.match(/[^A-Za-z0-9]+/)) {

它匹配包含至少一个不在列表[A-Za-z0-9]

中的字符的任何文本

答案 1 :(得分:1)

斜杠和右方括号是唯一需要在字符组中转义的 - 只要连字符不在两个字符之间。

if(/[/`~!@#$%^&*()_+=[{};':"<>?,.\/\]-]/.test(pswd) ){

答案 2 :(得分:0)

我不确定您要匹配的字符,因为原始字符串非常混乱。检查这是否是您想要的所有字符:

"we?dn^~!@#$%^&*()_+-={dsfs}sf[]\\|:\";',./?><".match(/[`~!@#$%^&*()_+=\]\[{};':"<>?,\/.-]/g)
>> ["?", "^", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", "-", "=", "{", "}", "[", "]", ":", """, ";", "'", ",", ".", "/", "?", ">", "<"]

为了清楚起见,这是正则表达式:

/[`~!@#$%^&*()_+=\]\[{};':"<>?,\/.-]/

修改

如果您想要包含\|,请使用此正则表达式:

/[\\`~!@#$%^&*()_+=\]\[{};':"<>?,\/.|-]/