Найдите регулярное выражение, используемое формами HTML5 для проверки - PullRequest
17 голосов
/ 16 октября 2011

Некоторые элементы ввода HTML5 принимают атрибут pattern, который является регулярным выражением для проверки формы. Некоторые другие элементы ввода HTML5, такие как input type=email, выполняют проверку автоматически.

Теперь кажется, что способ обработки проверки в разных браузерах различен. С учетом конкретного браузера, скажем, Chrome, возможно ли программно извлечь регулярное выражение, используемое для проверки? Или, может быть, там есть документация?

Ответы [ 3 ]

25 голосов
/ 16 октября 2011

В спецификации HTML5 в настоящее время указан действительный адрес электронной почты, соответствующий адресу ABNF:

1*( atext / "." ) "@" ldh-str *( "." ldh-str )

, который разъясняется в этом вопросе . @ SLaks ответ предоставляет регулярное выражение.

Сказав это, немного покопавшись в источнике, показывает, что WebKit реализовал проверку адреса электронной почты, используя в основном то же регулярное выражение, что и SLaks answer , т.е.

[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*

Однако не требуется, чтобы адреса электронной почты проверялись регулярным выражением. Например, Mozilla (Gecko) реализовал проверку электронной почты, используя довольно простой конечный автомат . Следовательно, нет необходимости в регулярном выражении, участвующем в проверке электронной почты.

2 голосов
/ 28 мая 2013

Спецификация HTML5 теперь дает (ненормативное) регулярное выражение, которое должно точно соответствовать всем адресам электронной почты, которые оно указывает как действительные. Вот копия этого в моем блоге здесь: http://blog.gerv.net/2011/05/html5_email_address_regexp/ и в самой спецификации: https://html.spec.whatwg.org/#e-mail-state-(type=email))

Вышеприведенная версия неверна только в том смысле, что она не ограничивает компоненты домена максимум 255 символами и не препятствует тому, чтобы они начинались или заканчивались знаком "-".

Gerv

0 голосов
/ 23 июня 2014

это работает для меня: pattern = "[^ @] + @ [^ @] +. [A-zA-Z] {2,6}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...