不能输入汉字
if (/[\u4E00-\u9FA5]/g.test(value)) {
必须包含数字和字母
!/^(?![^a-zA-Z]+$)(?!\D+$)/.test(value)
开头为字母
!/^[a-zA-Z](?!\D+$)/.test(value)
必须包含数字和字母且密码首字为字母
!/^[a-zA-Z](?![^a-zA-Z]+$)(?!\D+$)/.test(value)
例如
this.ruleFormRules = res.response.data[0]
const { lengthMin, lengthMax, numbersAndLetters, initialIsLetter, canDuplicate } = this.ruleFormRules
const validatePass = (rule, value, callback) => {
if (value) {
if (/[\u4E00-\u9FA5]/g.test(value)) {
callback(new Error(`不能输入汉字`))
} else {
if (numbersAndLetters && !/^(?![^a-zA-Z]+$)(?!\D+$)/.test(value)) {
callback(new Error(`密码长度${lengthMin}-${lengthMax}位,必须包含数字和字母!`))
} else if (initialIsLetter && !/^[a-zA-Z](?!\D+$)/.test(value)) {
callback(new Error(`密码长度${lengthMin}-${lengthMax}位,首字应为字母!`))
} else if (numbersAndLetters && initialIsLetter && !/^[a-zA-Z](?!\D+$)/.test(value)) {
callback(new Error(`密码长度${lengthMin}-${lengthMax}位,${numbersAndLetters ? '必须包含数字和字母且' : ''}首字为字母!`))
} else if (!canDuplicate && this.pwdData.old_password == value) {
callback(new Error('原密码和新密码不能相同!'))
}
}
} else {
callback()
}
}
const password = [
{
min: lengthMin,
max: lengthMax,
message: `密码长度${lengthMin}-${lengthMax}位${numbersAndLetters ? ',必须包含数字和字母' : ''}${initialIsLetter ? '且密码首字为字母' : ''}`,
trigger: ['blur']
},
{ validator: validatePass, trigger: 'blur' }
]
this.pwdRules.password = [...this.pwdRules.password, ...password]