Регулярное выражение на номер телефона

254
28 января 2019, 18:00

На сайте есть регулярка на ввод номера телефона

echo'                       <div class="profile__input-row">
                            <input class="profile__input" type="text" id="User_PhoneNum" name="tel" value="'.$row_inf['t_numb'].'"/ required pattern=^\+?[\s\-\(\)0-9]{7,19}$ title="Enter the phone in the format +x(xxx)xx-xx-xx" >';

Но все равно можно вводить абсолютно любые цифры, в чем проблема?

Answer 1

Рискну предположить что проблема в том, что строку регулярного выражения следует взять в кавычки так как это атрибут html.

Answer 2

Дело в том, что наличие атрибута 'pattern' у input'а не запрещает ввод других символов, не подходящих под этот паттерн. Он срабатывает после нажатия кнопки типа Submit формы и в этом случае запускается проверка введенного значения на соответствие шаблону. Подробнее.

Если соответствия нет, то форма не отправится дальше. Кроме того, при потере фокуса с элемента ввода и нажатии обычных кнопок (type="button") валидация так же не сработает.

<form action="?" method="post">
    <input type="text" name="phone" required="required" pattern="^\+?[\s\-\(\)0-9]{7,19}$"><br />
    <input type="button" name="simple_button" value="Don't work"><br />
    <input type="submit" name="submit" value="Work">
</form>

Если вы хотите динамически проверять вводимые символы, то необходимо использовать JavaScript на странице. Можно воспользоваться одной из готовых библиотек по заданию масок, например.

READ ALSO
Не работает функция по примеру, помогите

Не работает функция по примеру, помогите

Здраствуйте, суть проблемы в том, что я не могу получить значение функции getActive(), исходящей объекта $brand в коде:

242
Пропала цена на страницах товара Woocommerce

Пропала цена на страницах товара Woocommerce

Пропала цена товара на карточках товараКак на вариациях, так и без

247
Фильтрация многомерного массива

Фильтрация многомерного массива

есть многомерный массив вида

249
Указатели. Ошибка

Указатели. Ошибка

значение типа const char нельзя использовать для инициализации сущности типа char

833