0

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

我应该如何转义它们以便它在 Javascript 下正常工作?

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

3 回答 3

2

改用这个:

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

它匹配包含至少一个不在列表中的字符的任何文本[A-Za-z0-9]

于 2012-06-12T02:23:15.963 回答
1

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

if(/[/`~!@#$%^&*()_+=[{};':"<>?,.\/\]-]/.test(pswd) ){
于 2012-06-12T02:29:35.247 回答
0

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

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

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

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

编辑

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

/[\\`~!@#$%^&*()_+=\]\[{};':"<>?,\/.|-]/
于 2012-06-12T02:29:21.863 回答