Я хочу создать регулярное выражение с условиями:
Что я могу достичь
/^(?!.*([A-Za-z0-9!@#$&()\\-'.+,/?"])\1{2})(?=.*[a-z])(?=.*\d)[A-Za-z0-9!@#$&()\\-'.+,/?"]+$/
Это подтверждает, что строка имеет по крайней мере одно число и одну букву. Вместо последовательных номеров 123 он проверяет 111. И я не могу добавить в него 4-е условие.
Любая дополнительная помощь будет оценена по достоинству. Заранее спасибо.
Попробуйте это регулярное выражение:
^(?=[\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'
What I am able to achieve
- и что это дает ... насколько я вижу, все, что достигается, - это использовать какAt least one number and one letter must be used
(и, возможно,No more than 2 repeated characters
если вы имеете в виду рядом друг с другом) - если честно, один RegExp, вероятно, не поможет с этим - это должен быть ответ RegExp?