0

MSDN には電子メール アドレスを検証する例があり、以下は使用した正規表現です。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; }
4

1 に答える 1

0

Your regex was missing equals signs after the question mark in (?( (two occurrences)

Try this:

^(?=("")(""[^""]+?""@)|(([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}))$

They were meant to be look aheads (?=<regex>)

于 2013-07-09T03:29:27.173 に答える