我正在使用RegularExpression attribute在我的视图模型中的一个输入上验证多个电子邮件地址。 ErrorMessage不断出现在现场。我已在5个不同的在线测试网站上验证了我的RegEx,他们都测试结果为阳性。
这是我的代码:
[RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;\s]+\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*){0,7}", ErrorMessage = "Please enter a valid email address. For multiple addresses please use a comma or semicolon to separate the email addresses.")]
public string EmailAddresses { get; set; }
如果我输入一个可用的电子邮件地址,如果我输入两个没有空格的电子邮件地址就行了,但是如果我添加一个空格就会中断。我添加了'\ s'来包含空格,它确实适用于我尝试过的在线测试人员,但它在我的应用程序中无效。
预期的有效结果应为: 'test @ test.com,test2 @ test.com,test3 @ test.com'
然而,这又回来了无效。如果我使用完全相同的序列而没有空格则有效。
Kendo UI在将表单发送给控制器之前检查表单的验证。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
尝试这种模式:
"^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"
答案 1 :(得分:0)
你不需要" @"符号。我在http://regexstorm.net/tester测试了您的模式,它与test @ test.com,test2 @ test.com,test3 @ test.com正确匹配。使用下面的构造
public class LoginViewModel
{
[RegularExpression("\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;\s]+\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*){0,7}", ErrorMessage = "Please enter a valid email address. For multiple addresses please use a comma or semicolon to separate the email addresses.")]
public string EmailAddresses { get; set; }
}
要在ASP.NET MVC Framework中工作,请确保在视图上执行以下操作
<input type="text" id ="EmailAddresses" name="EmailAddresses"/>
要验证id
和name
属性。您可以按上述方式手动执行此操作,也可以使用@Html.EditorFor(model => model.EmailAddresses)
为您创建id
和name
属性
答案 2 :(得分:0)
我发现了这个问题。最后它与C#无关。问题是我在前端使用了Kendo UI,在主帖中更新了。 Keno UI还必须收到Andrew发送的RegEx更新才能解决问题。我会让安德鲁成为正确的解决方案,因为他的RegEx确实为我工作。由于我是新手,所以我完全被服务器端/客户端差异所左右。谢谢大家的帮助。