如何拆分文本框值并检查它是c#中的电子邮件ID还是纯文本

时间:2011-10-17 14:44:25

标签: c# asp.net arrays

我有一个文本框(txt_to),其值分隔;如何拆分值,即使只有一个值,代码也不应该通过错误。

我尝试使用以下代码将其拆分但出现错误

string[] recipients = Request.Form["txt_to"].Split(';');
Object reference not set to an instance of an object.

文本框中的值可以是电子邮件(abc@aaa.com),也可以是纯文本(Ios Group)。文本框中的值类似于abc@aaa.com; Ios集团。如何拆分值以及如何检查它是电子邮件ID还是纯文本

if(email id)
{
Do this
}
else if (Plain text)
{
Do this
}

4 个答案:

答案 0 :(得分:2)

RFC 2822声明您可以使用以下正则表达式验证电子邮件:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

所以你可以这样做:

if (Regex.IsMatch(input, **REGEX STRING HERE**))
{
    // E-mail
}
else
{
    // Not an e-mail
}

答案 1 :(得分:1)

string.Split在使用字符串中不存在的字符拆分字符串时不会抛出错误。

示例:

string test =  "jiberish";

string [] result = test.Split(';');
Console.WriteLine(result[0]);   

不会打击。如果得到空引用异常是因为Request.Form["txt_to"]为空

如果要验证电子邮件地址,请使用正则表达式。

类似的东西:

if(Regex.IsMatch("\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b",yourstring))
{
   //valid email
}
else
{
   //not valid
}

注意:上面的正则表达式可能不是最合适的。我用它来给你一个想法。

答案 2 :(得分:1)

您应该可以使用RegularExpressionValidator

<asp:RegularExpressionValidator ID="regEmail" runat="server" Display="Dynamic" ErrorMessage="*" ValidationExpression="^[\w\.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*(\.[a-zA-Z]{2,3}){1,2}$" ControlToValidate="txtEmail" />                                    

实施后,您可以验证字段在代码隐藏中是否有效,如下所示:

bool isValid = Page.IsValid;

如果您不想使用验证器,您可以在代码隐藏中使用表达式来验证电子邮件地址,如下所示:

var regex = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
bool isValid = regex.IsMatch(txtEmail.Text);

以下是您可以尝试的几种表达方式:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

^[\w\.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*(\.[a-zA-Z]{2,3}){1,2}$

答案 3 :(得分:-2)

您可以这样做:

如果字符串包含“@”而不是尝试构建MailAdress对象(在try / catch中),如果不包含它只是纯文本:)

if(!string.IsNullOrEmpty(textToTest){
    try{
       mail = new MailAdress(textToTest);
    }catch(Exception e){
       plainText = textToTest
    }
}

编辑:更新以考虑评论:)