Regex для Не более 2 последовательных чисел Не более 2 повторных символов?

1

Я хочу создать регулярное выражение с условиями:

  • Минимальная длина 6
  • Необходимо использовать хотя бы одно число и одну букву
  • Не более двух последовательных номеров (например, 123)
  • Не более двух повторяющихся символов

Что я могу достичь

/^(?!.*([A-Za-z0-9!@#$&()\\-'.+,/?"])\1{2})(?=.*[a-z])(?=.*\d)[A-Za-z0-9!@#$&()\\-'.+,/?"]+$/

Это подтверждает, что строка имеет по крайней мере одно число и одну букву. Вместо последовательных номеров 123 он проверяет 111. И я не могу добавить в него 4-е условие.

Любая дополнительная помощь будет оценена по достоинству. Заранее спасибо.

  • 0
    What I am able to achieve - и что это дает ... насколько я вижу, все, что достигается, - это использовать как At least one number and one letter must be used (и, возможно, No more than 2 repeated characters если вы имеете в виду рядом друг с другом) - если честно, один RegExp, вероятно, не поможет с этим - это должен быть ответ RegExp?
  • 1
    Негативный взгляд здесь может оказаться полезным, но регулярное выражение паролей - это проблема, которая уже хорошо освещена в переполнении стека. Вы сделали свое собственное исследование?
Показать ещё 3 комментария
Теги:

1 ответ

2

Попробуйте это регулярное выражение:

^(?=[\D]*\d)(?=[^a-zA-Z]*[a-zA-Z])(?=.{6,})(?!.*(\d)\1{2})(?!.*([a-zA-Z])(?:.*?\2){2,}).*$

демонстрация

Объяснение:

  • ^ - начало строки
  • (?=[\D]*\d) - положительный lookahead - проверяет наличие цифры
  • (?=[^a-zA-Z]*[a-zA-Z]) - положительный просмотр - проверяет наличие буквы
  • (?=.{6,}) - положительный взгляд - проверяет наличие по меньшей мере 6 литералов
  • (?!.*(\d)\1{2}) - Отрицательный просмотр - Проверяет наличие ОТСУТСТВИЯ 3 последовательных цифр. Тем не менее, это позволит сделать 2 последовательных цифры. Если вам не нужны даже две последовательные цифры, удалите {2} из этой части
  • (?!.*([a-zA-Z])(?:.*?\2){2,}) - Отрицательный просмотр - проверяет, что буква не должна присутствовать более двух раз в строке
  • .* - захватить строку
  • $ - конец строки

ВЫХОД:

jj112233         -Matches as it has atleast one letter, digit. Not more than 2 consecutive digits/letter. Has atleast 6 characters
jkhsfsndbf8uwwe  -matches 
a1234            -does not match as length<6 
nsds312          -matches
111aaa222        -does not match as it has more than 2 consecutive digits and also more than 2 repeated letters 
aa11bbsd         -match
hgshsadh12       -does not match as it has more than 2 'h'
hh8uqweuu        -does not match as it has more than 2 'u'
  • 0
    Спасибо за ответ, но это не может поймать "Не более 2 повторных символов". Например. «aa1aa1aa» «a» не следует повторять более 2 раз, но здесь это делается 6 раз.
  • 1
    @ AmanGupta Я обновил ответ. Я также добавил 4-е условие. Ни одна буква не будет повторяться более 2 раз в строке.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню