簡體   English   中英

如何拆分文本框值並檢查它是c#中的電子郵件ID還是純文本

[英]How to split text box value and check whether it is email ID or plain text in c#

我有一個文本框(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
}

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}$

你可以簡單地做:

如果字符串包含“@”而不是嘗試構建一個MailAdress對象(在try / catch中),如果它不是它只是純文本:)

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

編輯:更新,以考慮到評論:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM