2015-02-11 70 views
1

我花了整整一天的時間試圖修復這個正則表達式,但無法知道錯誤的確切位置。javascript無效的正則表達式無效組

我在使用regularexpression屬性的mvc模型中使用了下面的內容,但是當我在JavaScript文件中執行有效的表單時,它會拋出下面的錯誤「Uncaught SyntaxError:Invalid regular expression:Invalid group」。

這是我的正則表達式。

 [Display(Name = "Acct_Email", ResourceType = typeof(MyResource))] 
     [Required(ErrorMessageResourceType = typeof(MyResource), ErrorMessageResourceName = "Acct_EmailReq")] 
     [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-Z]{2,6}))$", ErrorMessageResourceType = typeof(MyResource), ErrorMessageResourceName = "Acct_EmailLength")] 
     public string Email { get; set; } 

請幫忙。提前致謝。

+0

還有超過6個字符的頂級域名 – 2015-02-11 13:47:27

+0

您可以給它一個解決方案嗎? 我在.NET中使用了相同的功能,並且它完美地用於電子郵件驗證。那麼在JavaScript驗證中出了什麼問題? – Kenta 2015-02-11 13:47:55

+0

https://msdn.microsoft.com/en-us/library/01escwtf(v=vs.110).aspx – 2015-02-11 13:51:46

回答

0

在正則表達式的開頭:@"^(?(""),我猜你的意思是:

@"^(?:("") 

的非捕獲組。

+0

它的功效。我說:如你所說。 – Kenta 2015-02-11 13:57:36

0

@JeSuisCharlie是正確的,但他錯過了一個。中途還需要另一個結腸。這裏是添加冒號的完整正則表達式:

^(?:("")("".+?""@)|(([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-Z]{2,6}))$ 
+1

使用上述正則表達式後,我仍然收到以下錯誤: 未捕獲的SyntaxError:無效的正則表達式:/^(?:(")(".+?"@)|(([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-Z] {2,6}))$ /:無效組 – Kenta 2015-02-13 06:39:27

+0

你能告訴我如何在javascript中使用這個提到的正則表達式嗎? – Kenta 2015-02-13 06:42:36

相關問題