2017-12-22 1 views
-1

以下は有効な電子メールを検証することです。しかし、私はそれを追加したい場合は、ユーザーが入力のみ。それは有効です。有効な電子メールを確認したり、ダッシュ( - )のみを入力できるように、以下のコードをどのように改善できますか?有効な電子メールとダッシュを確認してください

RegularExpressionValidator 
ID="RegularExpressionValidatorControlCompanyEmail" runat="server" 
Display="Dynamic" ControlToValidate="TextBoxCompEmail" 
ValidationExpression='[^\s()\[\]<>\\,:;@"]*@\w+([-.]\w+)*\.\w+([\-.]\w+)*([,;]\s*[^\s()\[\]<>\\,:;@"]*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*' 
ErrorMessage="<%$ 
Resources:LanguagePack.ProfileManagement,InvalidEmail %>" 
ValidationGroup="Delete" Enabled="true" 
+0

をテストするのに最適なサイトを見つけましたブランクは有効なものではありませんか? requiredfieldvalidatorを追加しないでください。空のメールをサーバー側で " - "に設定したい場合は、そこで行うことができます。 – Esko

+0

フィールドを空白のままにしたくないです。私はまだ電子メールを検証する必要があります@Esko – Lejen

+0

あなたがRegulaExpressionValidatorを持っているので、ユーザーがフィールドに何かを入力した場合、私は検証されます。フィールドを必須にしたいが、引き続き「 - 」を許可しますか?もしそうなら、これは純粋に正規表現の質問です。 – Esko

答えて

-2

System.Net.Mail.MailAddressを使用できます。 E-Mailは、例外がスローされます無効な構文を持っている場合は、この

var mail = new System.Net.Mail.MailAddress("[email protected]"); 

よう

書き込み何か。

+1

オペアンプはこれについて質問しなかった。 – Esko

+0

電子メールアドレスには、最も一般的でないパターンや文字を含めることができます。すべての有効な電子メールアドレスを許可する正規表現を書くことはできません。 OPは*サブセット*有効なものだけを検証しようとしています –

+0

さらに、電子メールのための検証属性が既にあります。[EmailAddressAttribute](https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations) .emailaddressattribute(v = vs.110).aspx) –

-3

私は答えを得ました。 RegexはOR条件とIf-Else条件を持つことができます。だから、私はOR条件を使って有効なメールを検証します。

ValidationExpression =」 (^ - $)|([^ \ sの()[] <> \、:; @ "] +(W \ @[ - ] \ + W) \ + W([。 ([ - 。] \ w +)([、;] \)\ w +([ - ] + W \)「)

とフィールドを残しているのはなぜ正規表現

https://regex101.com

+2

これは、間違った質問**への正解です。上記の私のコメントを参照してください。これは単に空白を許可するのではなく、 '' ''を許可するという恐ろしい設計です。 –

+0

幸運にもこれをデバッグします。いずれにせよ、電子メールアドレスは正規表現で検証することはできません。フィールドをオプションにする場合は、オプションにします。つまり、空の文字列を受け入れるようにします。または、チェックボックスを追加します。 –

+0

*内部*電子メールアドレスが有効であることを検証する場合は、それを調べてください。ユーザーにとって使いやすいものにしたい場合は、Active Directory、Exchangeなどを実際にチェックする自動補完を許可してください。アドレスを実際に検証したい場合は、誰かが存在しないアドレスに送信するのではなく、そうする必要があります。 –

関連する問題