Vee验证:SyntaxError:无效的正则表达式

时间:2020-01-15 02:50:28

标签: vue.js vee-validate

我使用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])//:未终止的组”

感谢支持。

Error stacktrace

1 个答案:

答案 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]_+])).*$/}"