Trouver le regex utilisé par les formulaires HTML5 pour la validation
certains éléments d'entrée HTML5 acceptent l'attribut pattern
, qui est un regex pour la validation du formulaire. Certains autres éléments d'entrée HTML5, tels que input type=email
effectue la validation automatiquement.
maintenant, il semble que la façon dont la validation est traitée est différente entre les navigateurs. Avec un navigateur spécifique, par exemple Chrome, est-il possible d'extraire programmatiquement le regex utilisé pour la validation? Ou peut-être qu'il y a de la documentation là-bas?
3 réponses
le HTML5 spec affiche actuellement une adresse e-mail valide correspondant à celle de L'ABNF:
1*( atext / "." ) "@" ldh-str *( "." ldh-str )
qui est expliqué dans cette question . @SLaks answer fournit un équivalent regex.
cela dit, avec un peu de creuser à travers la source, montre que WebKit mis en œuvre email address validation en utilisant essentiellement le même regex que SLaks réponse , c'est à dire,
[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*
toutefois, il n'est pas nécessaire que les adresses de courriel soient validées par une regex. Par exemple, Mozilla (Gecko) a mis en œuvre la validation de courriel en utilisant une machine d'état fini . Par conséquent, il n'est pas nécessaire qu'un regex soit impliqué dans la validation d'un courriel.
la spécification HTML5 donne maintenant un regex (non-normatif) qui est censé correspondre exactement à toutes les adresses email qu'il spécifie comme valide. Il y a une copie de celui-ci sur mon blog ici: http://blog.gerv.net/2011/05/html5_email_address_regexp / et dans la spécification elle-même: https://html.spec.whatwg.org/#e-mail-state-(type=email) )
la version ci-dessus est incorrecte seulement en ce qu'elle ne limite pas les composants de domaine à 255 max les caractères et ne les empêche pas de commencer ou de se terminer par un" -".
Gerv