在其他方法jquery validate中使用正则表达式来处理特殊字符

时间:2015-02-19 14:48:10

标签: javascript jquery regex jquery-validate

我有不同的密码验证规则。他们中的大多数工作正常,但特殊字符的一个是有点棘手的。规则说:密码必须包含至少一个特殊字符(来自特殊字符列表)。我创建了jquery validate的附加方法来处理这个问题,但由于某种原因,列表外的字符被视为有效。

例如:

  • 654321Ab /有效,因为/是可接受的特殊字符
  • 654321Ab /°必须无效,因为°不是有效的特殊字符,但现在它被视为正确

这是我的jsfiddle:http://jsfiddle.net/o6L3s14c/

我的附加方法的脚本:

$.validator.addMethod("pwcheckspechars", function (value) {
    return /[!@#$%^&*()_=\[\]{};':"\\|,.<>\/?+-]/.test(value)
}, "The password must contain at least one special character");

2 个答案:

答案 0 :(得分:5)

您报告的规则会检查字符串是否至少包含一个特殊字符。您提到的两个字符串都符合此规则(均包含/)。

第二个字符串包含未包含在规则中的其他字符这一事实并未改变测试的有效性(/仍然存在)。

您可以添加另一个验证方法来检查您的字符串是否只包含允许的字符,在此行中显示:

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

可以解释为:

  

START(a-Z,A-Z,0-9或某些特殊字符)一次或多次   END

示例:http://jsfiddle.net/o6L3s14c/4/

答案 1 :(得分:1)

$.validator.addMethod("pwcheck", function(value) {

      return /^[a-zA-Z0-9!@#$%^&*()_=\[\]{};':"\\|,.<>\/?+-]+$/.test(value)
       && /[a-z]/.test(value) // has a lowercase letter
       && /\d/.test(value)//has a digit
       && /[!@#$%^&*()_=\[\]{};':"\\|,.<>\/?+-]/.test(value)// has a special character
      },"must consist  lowercase letter, number and special characters");