2011-11-22 108 views
0

我使用的RegularExpressionValidator驗證用逗號seprated多個電子郵件地址‘空白「」

我下面的表達式工作正常,這個需求量的:

"((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*" 

要求是這個表達式應該能夠處理電子郵件地址後逗號後的空格。

例如,對於EMAIL1 @ domain.com,EMAIL2 @ domain.com 但它不就是[email protected][email protected]

我目前的工作表達我的文件瞭解可以有有很多解決方案,但在我的snario中最好的是增強這個表達。

請指引我

+0

我不能回答你的問題,但我想指出你的正則表達式[不是最優](http://stackoverflow.com/questions/201323/what-is-the-best -regular-expression-for-validating-email-addresses) – Amy

回答

1

這裏是我的建議:

((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([, ])*)* 

將接受電子郵件地址

+0

謝謝@Fischermaen,你的建議奏效。但是,你能否指導爲什麼「((\ w +([ - +。'] \ w +)* @ \ w +([ - 。] \ w +)* \。\ w +([ - 。] \ w +)*)* ([,\ s])*)*「 不工作,我讀\ s表示空格? 請指導。 – user576510

+2

在方括號內,每個字符都被解釋爲一個字符,'\ s'將按照您的意圖匹配一個'\'和's',而不是一個空格。 – Fischermaen

5

你可以使用現有的正則表達式,而是通過分割字符串之間的空白每個逗號和修剪尾隨/領先的空白:

var emails = input.Split(','); 
foreach (var email in emails.Select(ee => ee.Trim())) 
{ 
    if (!emailValidator.IsMatch(email)) 
    { 
     // announce a bad email 
    } 
} 
1

除了Fischermaen所說的之外,另一種選擇可能是將電子郵件分成單獨的電子郵件,然後單獨驗證每封電子郵件。

var emails = emailString.split(','); 
    for(var i = 0; i < emails.length; i++){ 
     var email = emails[i].trim().replace(',', ''); 
     // Now you can validate a single, comma-less, space-less email; 
    }