SO'da çok sayıda Regex e-posta doğrulaması buldum, ancak boş bir dize kabul edecek hiçbir şey bulamadım. Bu yalnızca Regex ile mümkün müdür? Boş dizeyi mi yoksa sadece e-postayı mı kabul ediyorsunuz? Bunun yalnızca Regex'te olmasını istiyorum.
SO'da çok sayıda Regex e-posta doğrulaması buldum, ancak boş bir dize kabul edecek hiçbir şey bulamadım. Bu yalnızca Regex ile mümkün müdür? Boş dizeyi mi yoksa sadece e-postayı mı kabul ediyorsunuz? Bunun yalnızca Regex'te olmasını istiyorum.
Yanıtlar:
Bu normal ifade kalıbı boş bir dizeyle eşleşecek:
^$
Ve bu (kabaca) bir e-posta veya boş bir dizeyle eşleşecektir:
(^$|^.*@.*\..*$)
^
durumlar vardır, burada etkili bir şekilde bir e-posta ararsınız veya bir dizenin ortasında hiçbir şey aramazsınız. Bunun (email_regex)?
için daha uygun.
^$
çalışmaz, ancak çalışır ^(?!.)
: [ ^
dize başlangıcı, (?!)
negatif ilerleme, .
herhangi bir karakter - satır besleme dahil değildir]
boş dize veya e-posta ile eşleşen
(^$|^[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)$)
boş dize veya e-posta ile eşleşen ancak aynı zamanda herhangi bir miktarda boşlukla eşleşen
(^\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)$)
e-posta ile eşleşen normal ifadenin kendisi hakkında daha fazla bilgi edinin:
Bir e-postayı bir normal ifadeyle eşleştirmeyin. Son derece çirkin, uzun ve karmaşık ve normal ifade ayrıştırıcınız muhtemelen yine de kaldıramaz. Bunları eşleştirmek için bir kütüphane rutini bulmaya çalışın. Yalnızca bir e-posta adresini eşleştirme pratik sorununu çözmek istiyorsanız (yani, (genellikle) işe yarayan yanlış kod istiyorsanız), başka birinin gönderdiği normal-ifadeler.info bağlantısını kullanın.
Boş dizeye gelince, ^$
birden fazla kişi tarafından bahsedilir ve iyi çalışır.
bu çözülecek, boş dizeyi veya tam bir e-posta kimliğini kabul edecek
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
/^\s+$|^$/gi
Boş ve boş alanları eşleştirmeyi tercih ederim .
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
Raylar içinde kullanıyorsanız - aktif kayıt doğrulamasını ayarlayabilirsiniz.
allow_blank: true
Gibi:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }