Каким образом указать, что знак + может быть только один и только в начале строки?
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'])
^
См. демо регулярного выражения
Комментариев нет:
Отправить комментарий