Я не уверен, что будет причиной ошибки валидации, но что касается вашего регулярного выражения, сопоставить буквенно-цифровые строки хотя бы с одним числом try ^(?=.*\d)\w{6,30}$
^ # Match begining of string
(?=.*\d) # Lookahead, assert there is any number of characters followed by a digit
\w{6,30} # \w matches letters, digits and the underscore character, 6-30 of them
$ # Match End of string
Если вы хотите сопоставлять только буквы и цифры, вместо \w
вы можете использовать [0-9a-zA-Z]
.
Ваше текущее регулярное выражение ^(?=.*(\d|\W)).{6,30}$
соответствует любой строке, которая содержит хотя бы один символ, отличный от [a-zA-Z_]
(\d|\W
соответствует цифре или символу, не являющемуся словом), длина которого составляет от 6 до 30 символов. , что не обязательно соответствует указанным вами требованиям.