我想验证只包含一个电子邮件地址的字符串。字符串值来自ASP.NET MVC文本框。输入文本可以包含由逗号,分号或空格分隔的多个电子邮件地址。例子:
以下表达式在我的情况下不起作用:
^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}(?!;|,)$
使用System.ComponentModel.DataAnnotations.RegularExpressionAttribute
完成模型验证。例如:
[RegularExpression(@"expr")]
public string SingleEmailAddress { get; set; }
答案 0 :(得分:1)
如果您没有尝试验证电子邮件地址,请忘记Regex
声明。这是高级模式匹配,你要做的就是寻找几个字符。
使用IndexOfAny
查找任何这些字符的第一个匹配项。如果找到了,您会收到多封电子邮件。 (假设字符串末尾没有分隔符,后面没有电子邮件地址。)
var hasMultipleEmails = !String.IsNullOrWhiteSpace(input)
&& input.IndexOfAny(new[] { ',', ';', ' ' }) > -1;
或者使用String.Split
和RemoveEmptyEntries
选项来处理迷路分隔符。
var hasMultipleEmails = input.Split(new[] { ',', ';', ' ' },
StringSplitOptions.RemoveEmptyEntries).Count() > 1;