密码的JavaScript正则表达式,包含至少6个字符,1个数字,1个字母,任何特殊字符

时间:2015-08-18 05:12:57

标签: javascript jquery regex

我这样想:

(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}$/)

但它不起作用。

3 个答案:

答案 0 :(得分:4)

您可以使用/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{6,}$/

  1. (?=.*\d)至少一位数
  2. (?=.*[a-zA-Z])至少一封信
  3. (?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])至少有一个特殊字符
  4. 使用 match() 查找模式

    &#13;
    &#13;
    $('#text').keyup(function() {
      $(this).css('border', this.value.match(/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{6,}$/) ? '5px solid green' : '5px solid red');
    });
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <input type="text" id="text" />
    &#13;
    &#13;
    &#13;

    或者您也可以使用 test() 来查找匹配

    &#13;
    &#13;
    $('#text').keyup(function() {
      var re = new RegExp(/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{6,}$/);
      $(this).css('border', re.test(this.value) ? '5px solid green' : '5px solid red');
    });
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <input type="text" id="text" />
    &#13;
    &#13;
    &#13;

答案 1 :(得分:1)

您需要从正则表达式中的开始和结束/周围删除括号。

此外,您可能希望将[a-z][A-Z]合并到[a-zA-Z]中,以便大写和小写字母都不必找到,只有一个两个。

答案 2 :(得分:0)

尝试使用String.prototype.match

var str1 = "abc1e.";

var str2 = "abc1e ";
// match special character; any character not digit , 
// not any alphanumeric character , including `_` , 
// not space character
var res1 = str1.match(/[^\d|\w|\s]/i);
// if match found , concat digit , alphanumeric character
// if resulting array length is 6 , return `true` , else return `false`
res1 = !!res1 ? res1[0].concat(str1.match(/\d+|\w+/i)).length === 6 : false;

var res2 = str2.match(/[^\d|\w|\s]/i);
res2 = !!res2 ? res2[0].concat(str1.match(/\d+|\w+/i)).length === 6 : false;

console.log(res1, res2);