J'ai trouvé beaucoup de validation de courrier électronique Regex dans SO mais je n'ai trouvé aucun qui accepterait une chaîne vide. Est-ce possible uniquement avec Regex? Accepter soit une chaîne vide ou un email uniquement? Je veux avoir ceci sur Regex seulement.
Ce motif de regex correspondra à une chaîne vide:
^$
Et cela correspondra (grossièrement) à un email ou à une chaîne vide:
(^$|^.*@.*\..*$)
correspondant chaîne vide ou email
(^$|^[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)$)
correspondance de chaîne vide ou d'e-mail, mais aussi correspondance de n'importe quelle quantité d'espace
(^\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)$)
en savoir plus sur l'e-mail correspondant à regex lui-même:
Les réponses ci-dessus fonctionnent ($ pour vide), mais je viens d'essayer cela et cela fonctionne aussi pour laisser vide comme ceci:
/\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 regex. C'est extrêmement laid, long et compliqué et votre analyseur syntaxique de regex ne pourra 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 la correspondance d'une adresse email (c'est-à-dire, si vous voulez un code erroné qui fonctionne (habituellement)), Utilisez le lien regular-expressions.info que quelqu'un d'autre a soumis.
En ce qui concerne la chaîne vide, ^$
est mentionné par plusieurs personnes et fonctionnera correctement.
cela résoudra, il acceptera une chaîne vide ou un identifiant de courrier électronique exact
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Si vous l'utilisez dans Rails - pour activer la validation, vous pouvez définir allow_blank: true
Comme:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }
Je préfère que /^\s+$|^$/gi
corresponde aux espaces vides et vides.
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));