验证ASP.. NET MVC模型使用regulareexpression attribute只包含一个电子邮件地址
本文关键字:attribute 包含一 电子邮件地址 regulareexpression NET ASP MVC 模型 验证 | 更新日期: 2023-09-27 18:02:42
我想验证一个只包含一个电子邮件地址的字符串。字符串值来自ASP。。NET MVC文本框。输入文本可以包含多个以逗号、分号或空格分隔的电子邮件地址。例子:
- abc@abc.com(真正的)
- abc@abc.com; def@abc.com (False)
- abc@abc.com, def@abc.com (False)
- abc@abc.com def@abc.com (False)
- abc@abc.com; def@abc.com; ghi@abc.com (False)
下面的表达式在我的情况下不起作用:
^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+'.[a-zA-Z]{2,4}(?!;|,)$
模型验证使用System.ComponentModel.DataAnnotations.RegularExpressionAttribute
。例子:
[RegularExpression(@"expr")]
public string SingleEmailAddress { get; set; }
如果您不想验证电子邮件地址,那么请忘记Regex
语句。这是用于高级模式匹配的,您所要做的就是查找几个字符。
使用IndexOfAny
查找这些字符的首次出现。如果找到了,说明你有多封邮件。(假设字符串末尾没有分隔符,后面也没有电子邮件地址)
var hasMultipleEmails = !String.IsNullOrWhiteSpace(input)
&& input.IndexOfAny(new[] { ',', ';', ' ' }) > -1;
或者使用String.Split
和RemoveEmptyEntries
选项来处理多余的分隔符。
var hasMultipleEmails = input.Split(new[] { ',', ';', ' ' },
StringSplitOptions.RemoveEmptyEntries).Count() > 1;