.match()为正则表达式密码返回null

时间:2014-06-20 07:26:19

标签: javascript jquery

我编写了javascript代码来检查最少4个字符和最多8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符,但它对于错误和正确的字符串都返回null 。我不知道什么是问题。请帮助。

var password = 'okK1@'; // you can take anything
var a;
a = password.match("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@@$!%*?&])[A-Za-z\d$@@$!%*?&]{4,8}");
if(a == false){
  alert('false');
}
else if (a == true){
  alert('true');
}
else{
  alert('null');
}

1 个答案:

答案 0 :(得分:3)

JavaScript不支持正则表达式中的look-behind;也就是说,分割要求更容易:

var password = ...;

var errors = [];

if (password.length < 4 /* || password.length > 8 */) {
    errors.push("Password must be at least 4 characters");
}
if (!/[A-Z]/.test(password)) {
    errors.push("Password must contain at least one uppercase letter");
}
if (!/[a-z]/.test(password)) {
    errors.push("Password must contain at least one lowercase letter");
}
if (!/\d/.test(password)) {
    errors.push("Password must contain at least one digit");
}
if (!/[$@!%*?&]/.test(password)) {
    errors.push("Password must contain at least one special character");
}

您可以选择使用return false;提前退出,但以这种方式执行此操作将有利于告诉用户他们的密码不正确的原因。