最近做项目,需要管理员在登记新用户时可以点击按钮自动生成密码功能。
要求1:数字+大写字母+小写字母8位
- 长度为8
- 必须包含字母和数字(注意:这里没有说字母区分大小写)
效果图:
代码:
automaticallyGenerate(){
console.log("自动生成");
//可获取的字符串
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWSYZabcdefghijklmnopqrstuvwsyz0123456789'
var list = []
//通过随机获取八个字符串的索引下标
for(var i=0;i<8;i++){
//61为chars字符串长度为62,注意索引是从0开始的
let val_1 = Math.round(Math.random()*61)
list.push(val_1)
}
//再根据随机获取的8个字符串索引拿到这8个字符串进行拼接
var passwd = ''
for(var n=0;n<list.length;n++){
passwd += chars.charAt(list[n])
}
// var regNumber = /[A-Za-z0-9]{8}$/
//最后判断是否符合要求(长度为8,由字母和数字组成),符合,将赋值到密码字段,不符合,重新调用该函数获取,只到符合为止
var regNumber = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8}$/
if(regNumber.test(passwd) ){
this.customerForm.password = passwd
}else{
this.automaticallyGenerate()
}
},
也可以借助自动生成密码的逻辑来实现验证码
小编亲测有效
要求2:数字+大写字母+小写字母+特殊字符8位
2021年12月29日 23:39 记录
根据需求变动,密码规则发生变化:要求是数字+大写字母+小写字母+特殊字符
生成8位密码字符
特殊符:.@$!%*#_~?&^
效果图
代码块
chars = 'ABCDEFGHIJKLMNOPQRSTUVWSYZabcdefghijklmnopqrstuvwsyz0123456789.@$!%*#_~?&^'
此刻长度按73计算哟
for(var i=0;i<8;i++){
let val_1 = Math.round(Math.random()*73)
list.push(val_1)
}
正则如下:
/^(?![A-Za-z0-9]+$)(?![a-z0-9_!@#$%^&*()+.]+$)(?![A-Za-z_!@#$%^&*()+.]+$)(?![A-Z0-9_!@#$%^&*()+.]+$)[a-zA-Z0-9_!@#$%^&*()+.]{8,}$/
最后给大家分享一个可直接使用正则的博主链接点击跳转
有用的,请点个赞,让更多的人看到!!!!