SOで多くのRegexメール検証を見つけましたが、空の文字列を受け入れるものは見つかりませんでした。これは正規表現のみで可能ですか?空の文字列または電子メールのみを受け入れますか?私はこれを正規表現のみにしたいです。
この正規表現パターンは空の文字列に一致します。
^$
そして、これは(粗い)電子メールまたは空の文字列に一致します。
(^$|^.*@.*\..*$)
一致する空の文字列またはメール
(^$|^[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)$)
空の文字列または電子メールに一致するが、任意の量の空白にも一致する
(^\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)$)
正規表現自体に一致するメールの詳細を参照してください。
上記の答えは機能しますが(空の場合は$)、これを試しただけで、次のように空のままにしておくこともできます。
/\A(INTENSE_EMAIL_REGEX|)\z/i
逆の順序で同じこと
/\A(|INTENSE_EMAIL_REGEX)\z/i
メールを正規表現と一致させないでください。 非常にugく、長く複雑です であり、正規表現パーサーはおそらくそれを処理できません。それらに一致するライブラリルーチンを見つけてください。電子メールアドレスの一致のpractical問題のみを解決する場合(つまり、(通常)動作する誤ったコードが必要な場合)、他の人が送信したregular-expressions.infoリンクを使用します。
空の文字列については、^$
が複数の人から言及されており、正常に機能します。
これは解決し、空の文字列を受け入れるか、電子メールIDを正確に受け取ります
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Rails-activerecord検証内で使用している場合は、allow_blank: true
を設定できます
として:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }
空のスペースと空のスペースを一致させるには/^\s+$|^$/gi
を好みます。
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));