关于密码强度的正则表达式
# 具体遇到的问题
老师,关于密码强度的正则表达式我是这么写的,但是实际测试结果跟我想得不一样,不知道问题出在哪里,请老师帮忙看一下。
# 尝试过的解决思路和结果
我的思路是这样想得:要么是字母跟数字的组合,要么是字母跟特殊符号的组合,再要么是数字跟特殊符号的组合,但是我写的正则测试的时候纯数字也是符合要求的,就以下面的第一个为例:要么是大小写字母或者数字,且至少有一个。接着逻辑或上其它两个组合,也都是至少要有一个。
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
mediumPattern = /^([a-zA-Z]+|\d+)|([a-zA-Z]+|[\.!@#\$%\^&\*\+-,]+)|([\d]+|[\.!@#\$%\^&\*\+-,]+)$/;
20
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕慕子
2020-11-21 10:54:34
同学你好,粘贴的这句正则表达式,由于使用的或|,所以是纯数字时也满足条件,可以通过验证。如下图所示:
老师这里给同学提供一个参考实现的思路,如下:
// 密码输入框元素的失焦事件
pwdInput.onblur= function() {
// 变量接收密码框的值
var pwdValue = this.value;
// 定义数量正则
var patt = /^\S{6,20}$/;
// 定义弱-中-强的正则
var pattern1 = /^\d{6,20}$|^[a-zA-Z]{6,20}$|^(\W|_){6,20}$/,
pattern2 = /^[\da-zA-Z]{6,20}$|^[(\W|_)a-zA-Z]{6,20}$|^[(\W|_)\d]{6,20}$/,
pattern3 = /^[(\W|_)\da-zA-Z]{6,20}$/;
//当数量不符合时的操作
if (!patt.test(pwdValue)) {
// 提示信息
} else {
//当数量符合时的操作
// 弱
if (pattern1.test(pwdValue)) {
// 改变后面小方块颜色
} else if (pattern2.test(pwdValue)) {
// 中
// 改变后面小方块颜色
} else if (pattern3.test(pwdValue)) {
// 强
// 改变后面小方块颜色
}
}
}
如果还有问题,可以新建提问,将你写的完整代码(包括html、css、js)全部粘贴过来,老师帮助同学测试。
也可以完成作业后,提交作业,标注上你的问题,批作业的老师会针对同学的完整项目,给出详细的修改建议,并整理成文档发送给同学,便于同学查看与修改。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星