含字母+数字+特殊符号 长度大于8位
最近在搞一个登录密码的显示,要求包: 含字母+数字+特殊符号 长度大于8位,然后自己不会正则表达式,就自己在网上搜索了一个就贴出来了
正则表达式:
let reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>,.\/]).{8,16}/;
console.log(reg.test('abc123@'))
//true
// 正则
var reg= /^(?=.*[A-Za-z])(?=.*\d)(?=.*[`~!@#$%^&*()_+<>?:"{},.\/\\;'[\]])[A-Za-z\d`~!@#$%^&*()_+<>?:"{},.\/\\;'[\]]{8,}$/ ;
// 可用 test 方法验证
reg.test(value)
上面的reg字符串中有3个小括号"()",我把它看成三个部分你来解析,三个括号里开头都是 ?=.* 我们先来解析这个东西
第一步先上图:
?= 是预言,表示这个位置后面的内容需要满足的条件,注意只是匹配一个位置,并不匹配具体的字符,所以是零宽
我个人的理解是?=你把他看成if语法 (?=.*[a-z])理解成是字符串中否存在一个a-z中的字符,