jQuery.validate.unobtrusive无法使用MSDN电子邮件地址RegEx

时间:2013-06-27 13:41:24

标签: jquery asp.net-mvc regex asp.net-mvc-3 unobtrusive-validation

MSDN有an example of validating email address,以下是它使用的RegEx。这是我见过的最好的RegEx bcz与其他所有人一样,它将xx @ [IP地址]识别为有效的电子邮件地址。我的问题是我无法在MVC3表单验证中使其工作。 jQuery.validate.unobtrusive.js抛出一个错误,说“无效组”。以前有人经历过这个吗?

RegEx:

^(?("")(""[^""]+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z0-9]{2,17}))$

MVC 3 Model:

[RegularExpression(@"^(?("")(""[^""]+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z0-9]{2,17}))$", ErrorMessageResourceName = "ErrorInvalidEmail", ErrorMessageResourceType = typeof(OptInOutResource))]
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "lblUserName", ResourceType = typeof(MyResource))]
public string UserName { get; set; }

1 个答案:

答案 0 :(得分:0)

(?((两次出现)中的问号后,你的正则表达式缺少等号?

试试这个:

^(?=("")(""[^""]+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?=(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z0-9]{2,17}))$

他们本来是要向前看(?=<regex>)