@Mir_AKM

Задание века. Как написать регулярные выражение чтобы было Не все нули?

Привет всем) Нужна Ваша помощь
Нужно написать регулярку
условие:
-Все цифры
-Длина 8 или 11
-Первые два символа - не два нуля
-третий символ: 3, 6, 7, 8, 9
-после третьего символа до конца не все нули.

вот, что у меня получилось
^\d[1-9][36789]\d{5}|[1-9]\d[36789]\d{5}|\d[1-9][36789]\d{8}|[1-9]\d[36789]\d{8}$
последнее условие не могу реализовать.
  • Вопрос задан
  • 2440 просмотров
Решения вопроса 1
@Mir_AKM Автор вопроса
^(?!0{2,2})\d{2,2}[36789](?!0*$)(?:\d{5,5}|\d{8,8})$
или так
^\d{2}(?<!0{2})[36789](\d{5}(?<!0{5})|\d{8}(?<!0{8}))$
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
^[1-9]{2}[36789]([1-9]{5}|[1-9]{8})$
?
Ответ написан
@Lol4t0
Для выделения чисел вида "не все нули заданной длины" можно воспользоваться решением с SO: stackoverflow.com/a/7865029/774651

^(?=[0-9]{4,6}$)0*[1-9][0-9]{3,}$
This first checks if the string is long 4-6 (?=[0-9]{4,6}$), then skips the 0s 0*and search for a non-zero [1-9] followed by at least 3 digits [0-9]{3,}.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы