校验要求:
1. 12-24个字符。2. 至少1个数字字符
3. 至少一个小写字母
4.至少一个大写字母
3.至少一个特殊字符
正则写法
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,24}$/
新建validatePassword.js 文件,返回校验失败的原因
export const validatePassword = function(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
}
}
// 在vue文件中,引入 js 文件
import { validatePassword } from '@/utils/validatePassword.js'
methods: {
async ConfirmPassword() {
const volidData = await validatePassword(this.Password)
if(volidData.success) {
// 检验成功的操作
}
}
}