老师在问答里给的验证密码的正则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <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回答
因为正则中用的是|,匹配一种或者两种都是可以的。
这样写是因为前面已经经过筛选了,给你举个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <!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积分~
来为老师/同学的回答评分吧