我这样想:
(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}$/)
但它不起作用。
答案 0 :(得分:4)
您可以使用/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{6,}$/
。
(?=.*\d)
至少一位数(?=.*[a-zA-Z])
至少一封信(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])
至少有一个特殊字符使用 match()
查找模式
$('#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;
或者您也可以使用 test()
来查找匹配
$('#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;
答案 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);