
Envoyé par
Battant
Bonjouir,
Je trouve étonnant que qu'il n'existe pas une expression comme
1 2
|
if ( text.matches( "\\p{Lower}* | @ | . " )) |
On dirait que les caractère @ et . ne sont pas admis alors que je voulais n'accepter que les minuscule, les point et une seule fois @ et je voulais que le premier caractère ne soit une lettre minuscule.
Heu non, cette expression régulière ne fait pas du tout ça, elle accept les chaine formée de 0 à n minuscule suivie soit de espace soit de espace, suivie de @, suivie soit de espace soit de espace, suivie de un caractère quelconque. Je vous conseille de bien lire comment on fait une expression régulière. Ici pour garder votre logique ce serait
if ( text.matches( "[\\p{Lower}@\\.]*" ))
mais encore une fois, ca ne valide pas correctement une adresse email.
Franchement étonnant que cela ne corresponde pas aux spécifications.
Quelles sont-elle et comment corriger mon expression ?
Pourriez-vous m'expliquer pourquoi l'adresse email ne pourrait être vérifiée a l'aide de l'expression régulière ?
Parceque la RFC est complexe et tordue sur le format valide d'une adresse email, tellement tordue voir récursive par endroit que c'est très complexe à mettre en oeuvre. A tel point que parfois même les serveur mail renoncent à tout faire correctement et laissent passer des trucs invalides
Vous trouverez ici un exemple d'expression régulière, et encore, elle n'est pas 100% valide, elle nécessite un prétraitement de l'adresse email préalable. Voici quelque exemples d'adresses valides tirées du rfc3696 qui est un résumé non exhaustif à destination des gens voulant valider une adresse email (vu le nombre d'application développée le faisant mal, voir très mal)
- Abc\@def@example.com
- Fred\ Bloggs@example.com
- Joe.\\Blow@example.com
- "Abc@def"@example.com
- "Fred Bloggs"@example.com
- user+mailbox@example.com
- customer/department=shipping@example.com
- $A12345@example.com
- !def!xyz%abc@example.com
- _somename@example.com
Je rajouterais aussi que depuis ce RFC, on peux faire des TLD de n'importe quel nom et des domaine avec caractères unicode, donc ceci serait aussi valide pour peu que les domaines associés existent:
- admin@unprojet.fsf.copyleft
- user@example.com. (notez le . final valide)
- customer-service@péripatéticiennes.be
Est-il vraiment nécessaire de vérifier l'adresse email après coup ?
Tout dépend de vos exigences. En général, si vous voulez une vérification de base pour détecter la faute de l'opérateur, la règle <n'importe quoi>@<n'importe quoi> est à peu près la seule validation que vous pouvez mettre en place sans risquer de refuser des adresse valides.
Concernant les numéro de téléphone, est-il possible qu'un + soit accepter comme premier caractère.
Sauf erreur de ma part, c'est exactement ce que fait celle que je vous ai fournis
Partager