Vee Validate: SyntaxError: Неверное регулярное выражение - PullRequest
0 голосов
/ 15 января 2020

Я использую 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 warn]: ошибка в обратном вызове для «значения» наблюдателя: «SyntaxError: недопустимое регулярное выражение: //^(?=(.?[az].?[AZ]]) /: Неопределенная группа "

Спасибо за поддержку.

Ошибка трассировки стека

1 Ответ

1 голос
/ 15 января 2020

Вместо этого мы должны использовать объектный формат правил.

Heads up!

Вы не должны использовать трубу '|' или запятые ',' в вашем регулярном выражении при использовании формата строковых правил, поскольку это вызовет конфликт с тем, как работает синтаксический анализатор. Вместо этого следует использовать объектный формат правил.

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