147 votes

Regex chaîne vide ou email

J'ai trouvé beaucoup de validation d'email Regex dans SO mais je n'en ai pas trouvé qui accepte une chaîne vide. Est-ce possible uniquement par Regex ? En acceptant soit une chaîne vide, soit un email uniquement ? Je veux que ce soit uniquement par Regex.

349voto

Dave Child Points 1789

Ce modèle de regex correspondra à une chaîne vide :

^$

Et cela correspondra (grossièrement) à un courriel ou à une chaîne vide :

(^$|^.*@.*\..*$)

1 votes

Quelque chose à considérer, faire ^(|.*@.* \.. *)$ devrait avoir le même effet puisqu'il dit soit blank soit ceci avec seulement l'utilisation de ^ et $ une fois, pour faire un peu de ménage.

1 votes

C'est assez vieux, mais je viens de tomber sur cette question et j'ai eu du mal à trouver la réponse. Il y a des cas où le début d'une chaîne de caractères est caché mais est quand même trouvé par ^ où, en fait, vous cherchez un email ou rien au milieu d'une chaîne. Pour ce (email_regex)? est mieux adaptée.

0 votes

Assurez-vous de vous renseigner sur l'extrême complexité de la validation des e-mails avant d'essayer d'utiliser RegEx pour la réaliser. stackoverflow.com/questions/201323/

11voto

Je sais que c'est une vieille question, mais si quelqu'un est intéressé c'est également possible pour la correspondance d'une expression vide ou d'une expression :

(expression) ?

(|expression)

8voto

Stofke Points 1287

Chaîne vide ou courriel correspondant

(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)

correspond à une chaîne de caractères vide ou à un courriel, mais correspond également à n'importe quelle quantité d'espaces.

(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)

Pour en savoir plus sur la regex de correspondance des emails elle-même :

http://www.regular-expressions.info/email.html

2voto

Chemist Points 102

Les réponses ci-dessus fonctionnent ($ pour empty), mais je viens d'essayer ceci et cela fonctionne aussi de laisser empty comme ça :

/\A(INTENSE_EMAIL_REGEX|)\z/i

La même chose dans l'ordre inverse

/\A(|INTENSE_EMAIL_REGEX)\z/i

-1voto

Kevin Points 15

Ne pas faire correspondre un email avec une regex. C'est extrêmement laid, long et compliqué et votre analyseur d'expressions rationnelles ne peut probablement pas le gérer de toute façon. Essayez de trouver une routine de bibliothèque pour les faire correspondre. Si vous voulez seulement résoudre le pratique Pour résoudre le problème de la correspondance d'une adresse électronique (c'est-à-dire si vous voulez un code erroné qui fonctionne (généralement)), utilisez le lien regular-expressions.info que quelqu'un d'autre a soumis.

Quant à la chaîne vide, ^$ est mentionné par plusieurs personnes et fonctionnera parfaitement.

14 votes

Les expressions rationnelles laides peuvent en fait être traitées par des analyseurs d'expressions rationnelles. Ne pas utiliser une regex juste parce qu'elle est moche est stupide.

0 votes

Ce n'est pas constructif. RegEx est éprouvé et testé (et loin d'être laid - diriez-vous que son fonctionnement est assez élégant ?) Suggérer vaguement une bibliothèque sans aucune indication sur une solution possible va à l'encontre de l'objectif de répondre à tout. Tout le monde a besoin d'un signet : code.tutsplus.com/tutorials/

0 votes

Les regex sont notoirement difficiles à lire, à maintenir et à déboguer, ce qui en fait un candidat de choix pour être remplacé par un appel à une bibliothèque.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X