Saya menemukan banyak validasi email Regex di SO tetapi saya tidak menemukan yang akan menerima string kosong. Apakah ini hanya bisa dilakukan melalui Regex? Hanya menerima string kosong atau email? Saya ingin memiliki ini di Regex saja.
Saya menemukan banyak validasi email Regex di SO tetapi saya tidak menemukan yang akan menerima string kosong. Apakah ini hanya bisa dilakukan melalui Regex? Hanya menerima string kosong atau email? Saya ingin memiliki ini di Regex saja.
Jawaban:
Pola regex ini akan cocok dengan string kosong:
^$
Dan ini akan cocok dengan (secara kasar) email atau string kosong:
(^$|^.*@.*\..*$)
^
, di mana secara efektif Anda mencari email atau tidak sama sekali di tengah-tengah string. Untuk ini (email_regex)?
lebih cocok.
^$
itu tidak berfungsi, tetapi ^(?!.)
tidak: [ ^
mulai string, (?!)
lookahead negatif, .
karakter apa pun - tidak termasuk linefeed]
cocok dengan string atau email kosong
(^$|^[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)$)
mencocokkan string kosong atau email tetapi juga mencocokkan jumlah spasi kosong
(^\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)$)
lihat lebih lanjut tentang regex yang cocok dengan email itu sendiri:
Jawaban di atas berfungsi ($ untuk kosong), tetapi saya baru saja mencoba ini dan itu juga berfungsi untuk membiarkannya kosong seperti:
/\A(INTENSE_EMAIL_REGEX|)\z/i
Hal yang sama dalam urutan terbalik
/\A(|INTENSE_EMAIL_REGEX)\z/i
Jangan mencocokkan email dengan regex. Ini sangat jelek dan panjang dan rumit dan parser regex Anda mungkin tidak bisa mengatasinya. Cobalah untuk menemukan rutin perpustakaan untuk mencocokkannya. Jika Anda hanya ingin menyelesaikan masalah praktis pencocokan alamat email (yaitu, jika Anda ingin kode yang salah yang terjadi pada (biasanya) berfungsi), gunakan tautan regular-expressions.info yang dikirimkan oleh orang lain.
Adapun string kosong, ^$
disebutkan oleh banyak orang dan akan berfungsi dengan baik.
ini akan menyelesaikan, itu akan menerima string kosong atau membalas id email
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Saya lebih suka /^\s+$|^$/gi
mencocokkan ruang kosong dan kosong.
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
Jika Anda menggunakannya di dalam rel - validasi activerec Anda dapat mengatur
allow_blank: true
Sebagai:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }