老师在问答里给的验证密码的正则
<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 星