Регулярное выражение на проверку последовательности неповторяющихся цифр
Необходимо проверить на длину строки (4) и чтобы строка не содержала последовательно повторяющиеся цифры. То есть такого не должно быть 1111
Сперва проверяю если строка точно содержит 4 цифры ^(?=\d{4}$) а далее пока не получается придумать
UPDATE:
Получилось вот такой регуляркой, правда не оч компактной
^(?=\d{4}$)(?!1{4}|2{4}|3{4}|4{4}|5{4}|6{4}|7{4}|8{4}|9{4}|0{4})([1-9]\d+$)
Ответы (2 шт):
как ограничить строку только 4мя цифрами вы уже в курсе, так что остается только сначала применить негативный просмотр вперед (?!___), исключив повторы. Для этого надо взять первую цифру у группу захвата (\d), а потом сослаться на нее через номер \1, повторив недостающие 3 раза {3}.
^(?!(\d)\1{3})\d{4}$
Регулярное выражение, которое найдёт совпадение целой строки из 4 цифр, начинающихся с ненулевой цифры, исключая строки с одинаковыми цифрами:
^([1-9])(?!\1+$)\d{3}$
^- начало строки([1-9])- захватывающая подмаска №1, находит и сохраняет в своём буфере одну цифру от1до9(?!\1+$)- отмена совпадения при наличии сразу после текущей позиции 1 и более повторов цифры, захваченной в подмаске №1\d{3}- любые три цифры$- конец строки.