vue中如何校验密码是否包含数字、大小写字母和特殊字符

26人浏览 / 0人评论 / 添加收藏

校验要求:
1. 8-24位的字符。

2. 至少1个数字字符
3. 至少一个小写字母
4.至少一个大写字母
3.至少一个特殊字符

 

正则写法 

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,24}$/

 

接下来,直接上硬核验证密码代码,如下:

checkPassword(password) {
 if (typeof password !== 'string' || password === '') {
   return {
     success: false,
     message: '请输入新密码'
   }
 }
 const errors = []
 if (!/[A-Z]/.test(password)) {
   errors.push('大写字母')
 }
 if (!/[a-z]/.test(password)) {
   errors.push('小写字母')
 }
 if (!/[0-9]/.test(password)) {
   errors.push('数字')
 }
 if (!/[^\w\s]/.test(password)) {
   // 非空格、制表符、换页符
   errors.push('特殊字符')
 }

 if (errors.length > 0) {
   return {
     success: false,
     message: `缺少${errors.join(',')}`
   }
 }

 if (/[\s]/.test(password)) {
   // 非空格、制表符、换页符
   return {
     success: false,
     message: '不允许空字符'
   }
 }

 if (password.length < 12) {
   return {
     success: false,
     message: '长度至少12位'
   }
 } else if (password.length > 24) {
   return {
     success: false,
     message: '长度至多24位'
   }
 }
 if (!/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,24}$/.test(password)) {
   return {
     success: false,
     message: '校验失败'
   }
 }
 return {
   success: true
 }
}

全部评论