Regex chaîne vide ou email

J’ai trouvé beaucoup de validation d’email Regex dans SO mais je n’en ai trouvé aucun qui accepterait une chaîne vide. Est-ce possible par Regex seulement? Accepter soit une chaîne vide ou un email uniquement? Je veux avoir ça sur Regex seulement.

Ce motif d’expression régulière correspondra à une chaîne vide:

^$ 

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

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

chaîne vide ou email 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)$) 

chaîne vide ou email correspondant mais correspondant à 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)$) 

voir plus au sujet de l’e-mail correspondant regex lui-même:

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

Les réponses ci-dessus fonctionnent ($ for empty), mais j’ai juste essayé ceci et cela fonctionne aussi pour laisser vide comme ça:

 /\A(INTENSE_EMAIL_REGEX|)\z/i 

Même chose dans l’ordre inverse

 /\A(|INTENSE_EMAIL_REGEX)\z/i 

Ne correspond pas à un email avec une expression régulière. C’est extrêmement moche et long et compliqué et votre parsingur de regex 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 problème pratique de faire correspondre une adresse e-mail (c’est-à-dire si vous voulez un code erroné qui arrive (généralement) au travail), utilisez le lien regular-expressions.info que quelqu’un d’autre a envoyé.

Comme pour la chaîne vide, ^$ est mentionné par plusieurs personnes et fonctionnera correctement.

ceci résoudra, il acceptera la chaîne vide ou exigera un identifiant d’email

 "^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" 

Je préfère /^\s+$|^$/gi pour faire correspondre les espaces vides et vides.

 console.log(" ".match(/^\s+$|^$/gi)); console.log("".match(/^\s+$|^$/gi)); 

Si vous l’utilisez dans les rails – validation validationecord, vous pouvez définir allow_blank: true

Comme:

validates :email, allow_blank: true, format: { with: EMAIL_REGEX }