Атрибут pattern тега <input>
Описание
Атрибут pattern задаёт регулярное выражение, которому должно соответствовать значение элемента <input>. Используется для валидации вводимых данных непосредственно в браузере.
<!-- Проверка почтового индекса -->
<label for="zip">Почтовый индекс (6 цифр):</label>
<input type="text" id="zip" name="zip"
pattern="\d{6}"
title="Введите 6 цифр почтового индекса"
required>
Поддерживаемые типы input:
| Тип | Пример pattern | Описание |
|---|---|---|
| text | [A-Za-z]{3,} |
Только буквы, минимум 3 |
| tel | [\+]\d{1,3}[\d\s-]{6,} |
Международный номер телефона |
| password | (?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,} |
Сложный пароль |
[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$ |
Проверка email | |
| url | https?://.+ |
Веб-адрес с http/https |
Пример с проверкой пароля:
<label for="pass">Пароль:</label>
<input type="password" id="pass" name="password"
pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}"
title="Минимум 8 символов, 1 цифра, 1 заглавная и 1 строчная буква"
required>
Рекомендации:
- Всегда добавляйте атрибут
titleс пояснением формата - Сочетайте с
requiredдля обязательных полей - Тестируйте регулярные выражения на разных браузерах
- Дублируйте проверку на сервере
Пример с проверкой даты:
<label for="birthdate">Дата рождения (ДД.ММ.ГГГГ):</label>
<input type="text" id="birthdate" name="birthdate"
pattern="(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d{2}"
title="Введите дату в формате ДД.ММ.ГГГГ">
Ограничения:
- Не работает с типами number, range, date и другими не-текстовыми
- Регулярные выражения должны соответствовать стандарту JavaScript
- В старых браузерах может игнорироваться
- Нет поддержки модификаторов (например, case-insensitive)
Пример с динамической подсказкой:
<label for="promo">Промокод:</label>
<input type="text" id="promo" name="promo"
pattern="[A-Z]{2}\d{4}"
title="2 заглавные буквы и 4 цифры">
<div id="promo-hint" style="font-size:0.8em;color:#666;">Формат: AB1234</div>
Примечание: Атрибут pattern предоставляет удобный способ проверки данных на стороне клиента, но не заменяет серверную валидацию. Для сложных проверок используйте JavaScript.