Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证有效的电子邮件和破折号_C#_Html_Regex - Fatal编程技术网

C# 验证有效的电子邮件和破折号

C# 验证有效的电子邮件和破折号,c#,html,regex,C#,Html,Regex,下面是验证有效电子邮件的步骤。但我想补充一点,如果用户只输入。这将是有效的。如何改进下面的代码,以便验证有效电子邮件或仅输入破折号(-) RegularExpressionValidator ID=“RegularExpressionValidatorControlCompanyMail”runat=“服务器” Display=“Dynamic”ControlToValidate=“TextBoxCompEmail” ValidationExpression='[^\s()\[\]\\,:;@“

下面是验证有效电子邮件的步骤。但我想补充一点,如果用户只输入。这将是有效的。如何改进下面的代码,以便验证有效电子邮件或仅输入破折号(-)

RegularExpressionValidator
ID=“RegularExpressionValidatorControlCompanyMail”runat=“服务器”
Display=“Dynamic”ControlToValidate=“TextBoxCompEmail”
ValidationExpression='[^\s()\[\]\\,:;@“]*@\w+([-.]\w+*\.\w+([\-.]\w+*)([,;]\s*[^\s()\[\]\\,:;@“]*@\w+([-.]\w+*。\w+)*。\w+([-.]\w+)*)*'
ErrorMessage=“”
ValidationGroup=“Delete”Enabled=“true”

您可以使用
System.Net.Mail.MailAddress

写这样的东西

var mail = new System.Net.Mail.MailAddress("test@test.de");

如果电子邮件的语法无效,将引发异常。

我得到了答案。正则表达式可以有OR和If Else条件。因此,我使用或条件来验证有效电子邮件

ValidationExpression= (^-$)|([^\s()[]\,:;@“]@\w+([-.]\w+)。\w+([-.]\w+)([,;]\s[^\s()[]\,:;@“]@\w+([-.]\w+)。\w+([-.]\w+))

我发现了一个测试正则表达式的好网站


为什么将字段留空不是一件有效的事情?只是不要添加requiredfieldvalidator。如果你想把空白邮件设置成服务器端的“--”,你可以在那里做。我不想让这个字段空白。我仍然需要验证电子邮件@EskoI是否会被验证,如果用户在字段中输入了一些内容,因为您有RegulaExpressionValidator。是否希望该字段为必填字段,但仍允许“-”?如果是这样,这纯粹是正则表达式问题。@Lejen这个问题毫无意义。如果电子邮件是可选的,那么让它成为可选字段。如果需要电子邮件,则不允许使用
-
。另外,我不主张使用复杂的正则表达式来验证电子邮件地址。编写一个全面的正则表达式不仅非常复杂,而且仍然不能保证电子邮件是有效的,例如
Not-a-real-email@fake-domain.com
将通过您的测试!如果您确实需要确保电子邮件是正确的,请发送确认电子邮件。op没有询问此问题。电子邮件地址可以包含最不寻常的模式和字符。不可能编写允许所有有效电子邮件地址的正则表达式。OP尝试只验证有效邮件的子集。除此之外,电子邮件已经有验证属性,这是错误问题的正确答案。见我上面的评论。这是一个糟糕的设计,“允许
-
”而不是只允许空白。祝您调试成功。在任何情况下,电子邮件地址都不能用正则表达式验证。如果希望该字段为可选字段,则将其设置为可选字段(使其接受空字符串)。或者添加复选框。如果您想验证内部电子邮件地址是否有效,请查找它。如果您想让用户更方便,请允许自动完成,它实际上会检查Active Directory、Exchange或您用于电子邮件的任何东西。如果你真的想验证地址,你无论如何都必须这样做,而不是允许某人发送到一个不存在的地址
var mail = new System.Net.Mail.MailAddress("test@test.de");