web-dev-qa-db-ja.com

正規表現の空の文字列またはメール

SOで多くのRegexメール検証を見つけましたが、空の文字列を受け入れるものは見つかりませんでした。これは正規表現のみで可能ですか?空の文字列または電子メールのみを受け入れますか?私はこれを正規表現のみにしたいです。

108
rob waminal

この正規表現パターンは空の文字列に一致します。

^$

そして、これは(粗い)電子メールまたは空の文字列に一致します。

(^$|^.*@.*\..*$)
251
Dave Child

一致する空の文字列またはメール

(^$|^[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)$)

正規表現自体に一致するメールの詳細を参照してください。

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

7
Stofke

上記の答えは機能しますが(空の場合は$)、これを試しただけで、次のように空のままにしておくこともできます。

/\A(INTENSE_EMAIL_REGEX|)\z/i

逆の順序で同じこと

/\A(|INTENSE_EMAIL_REGEX)\z/i
2
Chemist

メールを正規表現と一致させないでください。 非常にugく、長く複雑です であり、正規表現パーサーはおそらくそれを処理できません。それらに一致するライブラリルーチンを見つけてください。電子メールアドレスの一致のpractical問題のみを解決する場合(つまり、(通常)動作する誤ったコードが必要な場合)、他の人が送信したregular-expressions.infoリンクを使用します。

空の文字列については、^$が複数の人から言及されており、正常に機能します。

0
Kevin

これは解決し、空の文字列を受け入れるか、電子メールIDを正確に受け取ります

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

Rails-activerecord検証内で使用している場合は、allow_blank: trueを設定できます

として:

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

0
Salma Gomaa

空のスペースと空のスペースを一致させるには/^\s+$|^$/giを好みます。

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