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?

15
demandé sur serk 2011-10-16 21:36:01

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.

23
répondu ig0774 2017-05-23 12:25:31

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

2
répondu Gervase Markham 2017-03-28 16:20:28

ça marche pour moi: modèle.+]@^[@+]@^["=[a-zA-Z]{2,6}"

-1
répondu lll 2014-06-23 13:00:54