[英]Regex expression to validate maximum 5 email address separated by comma
[英]Regular expression to validate comma separated email addresses?
我需要驗證可以是單個或幾個以逗號分隔的電子郵件地址。
在我在正則表達式驗證器中使用之前,表達式如下:
string exp = @"((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*";
它正在驗證多個或一個電子郵件地址。
但同樣的表達在C#中並不具有價值? 它表示對無效地址有效。
請更正我或建議我驗證電子郵件地址的表達方式。
請提供更多詳情。 哪些地址匹配為有效,但應無效? 你如何調用正則表達式(你的c#代碼)?
我看到的一點是你缺少錨點。
^((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*$
^
匹配字符串的開頭
$
匹配字符串的結尾
如果您不使用它們,您的模式將在找到有效的子字符串后立即匹配。
我不知道C#我可以用','
分辨一個想法','
並驗證每個分離器 .....它很簡單
在不知道你是如何進行驗證的情況下,很難說為什么C#正在驗證驗證器拒絕的某些字符串。 很可能是因為驗證器正在查看整個字符串,並且您在C#中使用Regex.IsMatch()
,如果substring
匹配,它也會接受匹配。 要解決此問題,請將\\A
添加到開頭,將\\Z
到正則表達式的末尾。 在你的情況下,整個正則表達式是可選的(由(...)*
括起來)所以它也匹配空字符串 - 你想允許嗎?
然后,您可能想要完全重新考慮正則表達式方法 - 沒有正確的正則表達式可以正確驗證電子郵件地址(並且您仍然會傳遞看起來有效但沒有與之關聯的實際帳戶的地址)。
嘗試這個,
private bool IsValidMultipleEmail1(string value)
{
Regex _Regex = new Regex(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
string[] _emails = value.Split(new char[] { ',', ';', ' ' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string email in _emails)
{
if (!_Regex.IsMatch(email))
return false;
}
return true;
}
試試這個〜
try {
Regex regexObj = new Regex(@"([A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6},?)*", RegexOptions.IgnoreCase | RegexOptions.Multiline);
if (regexObj.IsMatch(subjectString)) {
// Successful match
} else {
// Match attempt failed
}
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
使用以下正則表達式,它將解決您的問題。 以下正則表達式也將使用逗號來接收post和pre空格
/^((([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z\\s?]{2,5} ){1,25}) (\\ s ?,\\ s *?) ) $ /
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.