回答:
この正規表現パターンは空の文字列と一致します。
^$
そして、これは(大まかに)メールまたは空の文字列に一致します。
(^$|^.*@.*\..*$)
^
場合があります。実際には、文字列の途中で電子メールを検索するか、何も検索しません。これ(email_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)$)
正規表現自体に一致するメールの詳細をご覧ください。
メールを正規表現と一致させないでください。これは非常に醜くて長くて複雑であり、正規表現パーサーはおそらくそれを処理できません。それらを照合するためのライブラリルーチンを見つけてください。実用的な問題だけを解決したい場合メールアドレスの照合という問題(つまり、(通常は)機能する間違ったコードが必要な場合)、他の誰かが送信したregular-expressions.infoリンクを使用します。
空の文字列について^$
は、複数の人が言及し、正常に動作します。
これは解決し、空の文字列または正確なメールIDを受け入れます
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
/^\s+$|^$/gi
空と空のスペースを一致させることを好みます。
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));