最近工作中遇到一个验证密码格式的正则问题,密码格式要求如下:
密码为6-20位数字、字母或下划线,至少包括其中两种,以字母开头
然后自己写过几个,也在网上找过,都没完全符合该密码规则。后来将之前用过的几种规则进行各种综合、试错,终于找到了能验证该密码规则的正则。
废话不多说,上正则:
/^[a-zA-Z](?![a-zA-Z]+$)\w{5,19}$/
下面是几种对于该正则的测试:
const passwordReg = /^[a-zA-Z](?![a-zA-Z]+$)\w{5,19}$/
passwordReg.test('aaaaa1') // true
passwordReg.test('aaaaa_') // true
passwordReg.test('a111111') // true
passwordReg.test('a_______') // true
passwordReg.test('Aaaaa1') // true
passwordReg.test('1aaaaa1') // false
passwordReg.test('_aaaaa1') // false
passwordReg.test('aaaaaa') // false
passwordReg.test('111111') // false
passwordReg.test('______') // false
第一次记录,以后会将更多前端开发中遇到的问题来此做记录。