ASP.NETの電子メールバリデーターで使用されている正規表現を知っている人はいますか?
.NETでRegularExpressionValidatorを使用してインターネットメールアドレスの正規表現を次に示します。
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
ちなみに、ページにRegularExpressionValidatorを入力してデザインビューに移動すると、ValidationExpressionフィールドがあり、これを使用して式のリストから選択できます。ネット。必要な式を選択すると、バリデーターに使用される正規表現を保持する検証式:テキストボックスがあります
メールアドレスの形式はもう検証していません(アットマークとその後にピリオドがあることを確認するためにチェックします)。この理由は、正しくフォーマットされたアドレスが彼らのメールでさえあると言うことですか?メールを送信し、リンクをクリックするかコードを確認するように依頼する必要があります。これは、電子メールアドレスが有効であり、ユーザーが実際に電子メールを受信できることを検証する唯一の実際の方法です。
電子メールアドレスは、単なる正規表現では正しく検証することが非常に困難です。 ここ はpretty恐らく正規表現を実装する恐ろしい正規表現です RFC822、第6章 、有効な仕様メールアドレス。
本当の答えではありませんが、おそらくあなたが達成しようとしていることに関連しています。
RegularExpressionValidatorを使用して、電子メールアドレスの形式を検証できます。 RegularExpressionValidatorのValidationExpressionプロパティで正規表現を指定する必要があります。それは次のようになります
<asp:RegularExpressionValidator ID="validateEmail"
runat="server" ErrorMessage="Invalid email."
ControlToValidate="txtEmail"
ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" />
ボタンまたはリンクのイベントハンドラーでも、!Page.IsValidを確認する必要があります。ここでサンプルコードを確認してください。 サンプルコード
また、RegularExpressionValidatorを使用したくない場合は、単純な検証メソッドを作成し、そのメソッドにSystem.Text.RegularExpressions名前空間のusinf RegExクラスを記述できます。
チェック例:
正規表現については、最初に次のWebサイトを見てください: RegExLib.com
Validatorを使用したクライアント側の検証とは別に、サーバー側の検証も行うことをお勧めします。
bool isValidEmail(string input)
{
try
{
var email = new System.Net.Mail.MailAddress(input);
return true;
}
catch
{
return false;
}
}
これは、電子メールアドレスを検証するのに最適な式です。
^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$
RegularExpressionValidatorでこの式を使用して、電子メールアドレスの形式を検証できます。
<asp:RegularExpressionValidator ID="validateEmail"
runat="server" ErrorMessage="Invalid email."
ControlToValidate="txtEmail"
ValidationExpression="^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$" />