簡體   English   中英

正則表達式驗證逗號分隔的電子郵件地址?

[英]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.

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