我使用VeeValidate和regex作为密码,要求:大写,小写,数字和符号中至少有两个字符。
v-validate="required|min:8|max:20|regex:/^(?=(.*?[a-z].*?[A-Z])|(.*?[a-z].*?[0-9])|(.*?[a-z].*?[!@#$%^&*()_+])|(.*?[A-Z].*?[0-9])|(.*?[A-Z].*?[!@#$%^&*()_+])|(.*?[0-9].*?[!@#$%^&*()_+])).*$/"
但是浏览器显示错误消息:
[Vue警告]:监视程序“值”的回调中发生错误:“ SyntaxError:正则表达式无效: //^(?=(.?[a-z].?[A-Z])//:未终止的组”
感谢支持。
答案 0 :(得分:1)
我们应该改用规则的对象格式。
抬头!
您不应使用管道“ |”或常规中的逗号“,” 使用字符串规则格式时的表达式,因为它将导致 与验证器解析工作方式冲突。您应该使用对象 而是规则的格式。
v-validate="{required: true, min:8, max:20,
regex:/^(?=(.*?[a-z].*?[A-Z])|(.*?[a-z].*?[0-9])|(.*?[a-z].*?[!@#$%^&*()_+])|(.*?[A-Z].*?[0-9])|(.*?[A-Z].*?[!@#$%^&*()_+])|(.*?[0-9].*?[!@#$%^&*()_+]))/}"
更新最新的正则表达式:大写,小写,数字和符号中的至少两个字符。
v-validate="{required: true, min:8, max:20,
regex:/^(?=(.*?[a-z].*?[A-Z])|(.*?[A-Z].*?[a-z])|(.*?[a-z].*?[0-9])|(.*?[0-9].*?[a-z])|(.*?[a-z].*?[!@#$%^&*()_+])|(.*?[!@#$%^&*()_+].*?[a-z])|(.*?[A-Z].*?[0-9])|(.*?[0-9].*?[A-Z])|(.*?[A-Z].*?[!@#$%^&*()_+])|(.*?[!@#$%^&*()_+].*?[A-Z])|(.*?[0-9].*?[!@#$%^&*()_+])|(.*?[!@#$%^&*().*?[0-9]_+])).*$/}"