Требуется помощь Regex в проверке полей - PullRequest
0 голосов
/ 29 июля 2011

Мне нужно проверить поле со следующими требованиями:

  • должно быть не менее 6 символов
  • должно быть не более 50 символов.
  • необходимосодержать хотя бы один алфавитный символ
  • Должен быть хотя бы один символ «Другой».Символ «Другой» может быть только числом или любым из следующих 8 символов: подчеркивание, дефис, точка, амперсанд, доллар, звезда, восклицательный знак, символ @

Я придумалследующее регулярное выражение, но оно не всегда работает, оно позволяет использовать некоторые специальные символы, которые я хочу исключить

/^(?!.*(.)\1)((?=.*[^\w\d\s])(?=.*\w)|(?=.*[\d])(?=.*\w)).{6,50}$/

Ответы [ 3 ]

7 голосов
/ 29 июля 2011

Неужели это должно быть регулярное выражение? Я бы просто написал функцию, которая проверяет каждый из этих критериев.

function isValid(password)
{
    return password.length >= 6 
        && password.length <= 50
        && password.match(/[A-Za-z]/)
        && password.match(/[0-9_\-.&$*!@]/);
}

Разве это не проще?

0 голосов
/ 29 июля 2011

Я бы сказал, что вам нужно следующее:

(буквы или символы) * буквы + символы + (буквы или символы) *

OR

(буквы или символы) * символы + буквы + (буквы или символы) *

0 голосов
/ 29 июля 2011

Это потому, что вы соответствуете с . в конце, поэтому, если все ваши условия выполняются, то любые оставшиеся символы до 50 могут быть любыми.Я бы использовал:

/^(?=.{6,50}$)(?=.*[a-zA-Z])(?=.*[\d_.&$*!@-])[a-zA-Z\d_.&$*!@-]*$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...