[解決済み】正規表現によるメール検証
質問
私はこれを使用しています
@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
電子メールを検証するための正規表現
([\w\.\-]+)
- これは、第一レベルドメイン(多くの文字と数字、およびポイントとハイフン)用です。
([\w\-]+)
- これは第2レベルドメイン用です
((\.(\w){2,3})+)
- そして、これは他のレベルドメイン(3から無限大まで)のためのもので、点と2つまたは3つのリテラルを含んでいます。
この正規表現に何か問題があるのでしょうか?
EDIT:it doesn't match the "[email protected]" email
解決方法は?
TLDのような .博物館 はこの方法ではマッチングされませんし、他にも長いTLDがいくつかあります。また、メールアドレスの検証には MailAddressクラス マイクロソフトの説明では こちら をノートで紹介しています。
メールアドレスの検証には、正規表現を使う代わりに は、System.Net.Mail.MailAddress クラスを使用することができます。判断するには メールアドレスが有効かどうか、そのメールアドレスを MailAddress.MailAddress(String)クラスのコンストラクタを使用します。
public bool IsValid(string emailaddress)
{
try
{
MailAddress m = new MailAddress(emailaddress);
return true;
}
catch (FormatException)
{
return false;
}
}
これにより、正規表現を書く(あるいは他の人が書いたものを理解しようとする)必要がなくなるので、多くの頭痛の種を減らすことができます。
EDIT
: アレルギーをお持ちの方へ
try/catch
: .NET 5 では
MailAddress.TryCreate
. 以下もご参照ください。
https://stackoverflow.com/a/68198658
.、スペース、.TLD の欠落などを修正する例を含む。
関連
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] 有効なメールアドレスの最大長を教えてください。
-
[解決済み] 正規表現を使用した電話番号の検証方法
-
[解決済み] 貪欲 vs. 渋い vs. 所有格の修飾語
-
[解決済み】単語間のスペースを許容する正規表現
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。