Формы
• 111
Этот атрибут можно добавлять и к другим типам ввода данных: например,
type=email
multiple>
позволяет вводить несколько адресов электронной почты.
АТРИБУТ PATTERN
Некоторые типы ввода данных, о которых говорилось выше, —
email
,
number
,
url
и т. д. —
на самом деле являются «встроенными» регулярными выражениями, так как браузер про-
сто проверяет, что введенные данные выглядят так, как должны.
А что если вы хотите использовать другой шаблон? Атрибут
pattern
позволяет вам самим
создавать регулярные выражения, которым должны соответствовать вводимые данные.
Так что если пользователь должен ввести одну цифру и три заглавных символа алфавита,
регулярное выражение будет содержать одно число [0–9] и три буквы [A–Z]{3}, каждая из
которых должна быть в верхнем регистре; тогда для элемента ввода будет использоваться
такой код.
¬ title="A part number is a digit followed by three
¬ uppercase letters.">
Можно, кстати, добавить
placeholder="1ABC"
или другую короткую подсказку.
В
спецификации говорится, что регулярные выражения атрибута
pattern
строятся в со-
ответствии с синтаксисом регулярных выражений в JavaScript за исключением того, что
в них подразумевается наличие
^(:?
в начале и
)$
в конце.
Так что если вы привыкли работать с регулярными выражениями, вы, скорее всего, уже
знаете, что нужно делать. Если нет, перед вами открывается интереснейший мир регуляр-
ных выражений.
В
Интернете вы почти всегда сможете найти то регулярное выражение JavaScript, которое
вам нужно. Но с регулярными выражениями на самом деле довольно легко работать, если
смотреть на это проще.
Например, для поля ввода ZIP-кода в формате 99999 или 99999-9999 (считая, что 9 соот-
ветствует любой цифре) можно использовать такой код.
Это
регулярное выражение ищет последовательности из пяти цифр с необязательным
суффиксом — дефисом и еще одной последовательностью из
четырех цифр.
Можно расширить наш шаблон так, чтобы он позволял вводить почтовые коды
Соединенного Королевства (используя упрощенный вариант).
Теперь наше регулярное выражение стало гораздо более сложным и поэтому проверить его
в большой форме на веб-странице будет не очень просто. Но так как здесь используется
тот же синтаксис, что и в JavaScript, мы можем выполнить проверку в
консоли браузера
(например, в Firebug или Opera Dragonfly), используя чистый JavaScript. Приведенный ниже
пример — тест, определяющий правильность проверки почтового кода Соединенного
112 • Глава 3
Королевства; в нем используется JavaScript-метод
test
. Обратите внимание на то, что
я добавил
^(?:
в начало и
)$
в конец тестов (об этом говорится в спецификации HTML5).
/^(:?[a-zA-Z]{1,2}\d{1,2}\s?\d[a-zA-Z]{1,2})$/.test
¬ (
"bn14 8px")
> true
/^(:?[a-zA-Z]{1,2}\d{1,2}\s?\d[a-zA-Z]{1,2})$/.test
¬ (
"bn149 8px")
> false
Эти результаты верны, поскольку «bn149» не соответствует стандарту почтовых кодов
(и, безусловно, недопустим с
точки зрения нашего надуманного примера). Наконец, стоит
отметить, что атрибут
pattern
восприимчив к регистру, и так как у нас нет возможности
переключить его в режим
невосприимчивости, в этом примере нам приходится явно ука-
зывать символы в
нижнем и верхнем регистре (отсюда и запись [a-zA-Z] ).
Достарыңызбен бөлісу: