老师在问答里给的验证密码的正则
<script>
var str1="312345";
var str2="aabbcc";
var str3="###$$%%";
var str4="1a23##$%%";
var reg1=/^[0-9|a-z]{6,20}$/i;
var reg2=/^[\W|a-z]{6,20}$/i;
var reg3=/^[\W|0-9]{6,20}$/i;
var reg_all=/^\W[a-zA-Z0-9]*$/;
console.log(reg1.test(str1));
console.log(reg2.test(str2));
console.log(reg3.test(str3));
console.log(reg_all.test(str4));
console.log(reg_all.test(str3));
console.log(reg_all.test(str2));
console.log(reg_all.test(str1));
</script>https://class.imooc.com/course/qadetail/139746
老师在问答里给的验证密码的正则我测试了一下怎么不行呢。我看了很多其他的问答下面老师也都是用的这个正则。是我哪里打错了么?
reg1,2,3是两种结合的正则,但是单一组合也都通过了。
reg4是三种结合的正则,但是str4却通不过。
3
收起
正在回答
2回答
因为正则中用的是|,匹配一种或者两种都是可以的。
这样写是因为前面已经经过筛选了,给你举个例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input type="text" id="pass">
<span id="tip"></span>
<script>
var pass = document.getElementById('pass');
var tip = document.getElementById('tip');
pass.onblur = function() {
var value = this.value;
var reg = /\S{6,20}/;
if (!reg.test(value)) {
tip.innerHTML = '6-20个字符';
} else {
if (/^[1-9]{6,20}$/.test(value) || /^[a-zA-Z]{6,20}$/.test(value) || /^\W{6,20}$/.test(value)) {
tip.innerHTML = '密码强度弱';
} else if (/^[1-9|a-z]{6,20}$/.test(value) || /^[\W|a-z]{6,20}$/.test(value) || /^[\W|1-9]{6,20}$/.test(value)) {
tip.innerHTML = '密码强度一般';
} else if (/\W[0-9a-zA-Z]*/.test(value)) {
tip.innerHTML = '密码强度强';
}
}
}
</script>
</body>
</html>要结合整体代码去看,不要只测试一个正则哦。
自己再测试下。

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星