C#正则表达式属性未按预期工作

时间:2015-12-14 19:02:06

标签: c# asp.net regex

我正在使用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在将表单发送给控制器之前检查表单的验证。

非常感谢任何帮助。提前谢谢。

3 个答案:

答案 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"/> 

要验证idname属性。您可以按上述方式手动执行此操作,也可以使用@Html.EditorFor(model => model.EmailAddresses)为您创建idname属性

答案 2 :(得分:0)

我发现了这个问题。最后它与C#无关。问题是我在前端使用了Kendo UI,在主帖中更新了。 Keno UI还必须收到Andrew发送的RegEx更新才能解决问题。我会让安德鲁成为正确的解决方案,因为他的RegEx确实为我工作。由于我是新手,所以我完全被服务器端/客户端差异所左右。谢谢大家的帮助。