如何分割文本框值,并检查它是电子邮件ID还是纯文本在c#

本文关键字:ID 电子邮件 文本 分割文本 检查 | 更新日期: 2023-09-27 18:11:23

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

我试图用下面的代码分割它,但得到一个错误

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

文本框中的值可以是email格式(abc@aaa.com),也可以是纯文本格式(Ios Group)。文本框中的值如abc@aaa.com;Ios。如何分割值以及如何检查它是电子邮件id还是只是纯文本

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

如何分割文本框值,并检查它是电子邮件ID还是纯文本在c#

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
}

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
}

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

您应该能够使用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}$

你可以这样做:

如果字符串包含"@",那么尝试构建一个mailaddress对象(在try/catch中),如果它不包含它只是纯文本:)

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

编辑:更新以考虑注释:)