Страницы

Поиск по вопросам

четверг, 16 мая 2019 г.

регулярка 0-9 и один +

Каким образом указать, что знак + может быть только один и только в начале строки?
preg_match('#^([+{1}0-9]*)$#ui', $_POST['tel'])


Ответ

Внутри символьного класса большинство символов не являются специальными символами. Это касается и квантификаторов. [+{1}] находит +, {, 1 или }
Чтобы шаблон ^([+{1}0-9]*)$ находил + только в начале строки, его необходимо вынести за скобки, удалить квантификатор {1} (это поведение по умолчанию) и экранировать его. Модификаторы ui тут не нужны, так как в шаблоне нет букв.
preg_match('#^(\+[0-9]*)?$#', $_POST['tel'])
См. демо регулярного выражения
Необязательная захватываемая группа (...)? добавлена для того, чтобы находилась также пустая строка (как в оригинальном случае).
Если знак + необязателен, добавьте квантификатор ?
preg_match('#^\+?[0-9]*$#', $_POST['tel']) ^
См. демо регулярного выражения

Комментариев нет:

Отправить комментарий