仅适用于特殊字符的Javascript RegExp
我正在构建一个实时密码验证程序。我需要检查这些特殊字符中是否至少存在一个:!@$%^&*()+ 我还看到了其他涉及字母字符和数字的问题,但我需要检查,只检查特殊字符。这是我至今为止所做的工作,但是当我回过头来编辑文本中间的一个字符时,它就停止工作了。 缩短代码:仅适用于特殊字符的Javascript RegExp,javascript,regex,escaping,Javascript,Regex,Escaping,我正在构建一个实时密码验证程序。我需要检查这些特殊字符中是否至少存在一个:!@$%^&*()+ 我还看到了其他涉及字母字符和数字的问题,但我需要检查,只检查特殊字符。这是我至今为止所做的工作,但是当我回过头来编辑文本中间的一个字符时,它就停止工作了。 缩短代码: $('#account-password').on('input', function () { var pass = $(this).val(), special = /^[\!@\#\$\%\^&\*\(\)
$('#account-password').on('input', function () {
var pass = $(this).val(),
special = /^[\!@\#\$\%\^&\*\(\)\+]+$/
// Special Character Check
if ($(this).val().match(special)) {
// OK
} else {
//Not OK
}
});
完整代码:
只为特殊字符编写regexp的正确方法是什么?要检查这些特殊字符中的至少一个,此regex就足够了:
special = /[!@#$%^&*()+]/
您的正则表达式:/^[\!@\\\\$\%\^&*\(\)\+]+$/
只有在所有输入字符都由这些特殊字符组成时才会匹配
PS:在字符类中,您不需要转义这些特殊字符。^[\!@\\\\\$\%^&*\(\)\+]+$
仅当输入的每个字符都是这些字符中的一个时匹配。不要锚定表达式,不需要重复。(我希望您不要将密码长度限制为9个字符:-/)