Регулярное выражение на проверку длины

108
28 февраля 2022, 23:40

Есть следующая регулярка которая проверяет номер телефона /373(\d{9})$/

Хочу еще добавить проверку на валидность операторского префикса, но он может состоять как из 2 цир так из 3, но на выходе нужно чтобы длина состояла из 9 цифр вместе с префиксом.

Пример /373(44|447)(\d{9})$/

Answer 1

можно использовать просмотры вперед. Сначала проверить, что впереди 9 цифр, а потом проверить коды.

^373(?=\d{9}$)(11|222)\d+$
  • сначала проверяем что строка начинается с 373 (^373)
  • затем используем позитивный просмотр вперед, в котором проверяем, что впереди 9 цифр , а затем конец строки (?=\d{9}$)
  • потом проверяем собственно префиксы коды оператора, например 11|222.
  • далее сам номер определяют оставшиеся числа \d+.

https://regex101.com/r/hoAMBh/2

Answer 2

Ну так просто добавь к двухзначному ещё цифру:

^373(44\d|447)\d{6}$

Хотя конкретно в данном случае эта конструкция бесполезна, т. к. 447 очевидно является частным случаем для 44\d.

READ ALSO
Робокасса не заносит данные в БД

Робокасса не заносит данные в БД

Оплата проходит, но номер почему-то не меняетсяВ БД есть колонка с полем ordernum, там я планировал делать номер заказа +1 каждый раз

112
Как правильно скачивать файлы с удаленного сервера?

Как правильно скачивать файлы с удаленного сервера?

Как правильно скачивать статические файлы с удаленного сервера? 1 запуск скрипта = 1 скачивание файла, те keep-alive не рассматривается

90
Как вытащить данные из json на php

Как вытащить данные из json на php

Всем привет, такой вопрос: как проверять массив?

202
Подключение к php c++

Подключение к php c++

В интернете часто вижу: Если у вас долго выполняется php function, то советуем сделать её на c++

193