[英]As of Firefox 4, regular expression throws “”Regular expression too complex" error
我有以下電子郵件地址驗證程序,當要評估的字符串命中特定長度時,該程序將不進行評估並拋出上述錯誤:
^([\w\-]+)([\.\w\-\+]+)*@([\w\-]+\.){1,5}([A-Za-z]){2,4}$
易於復制。 將正則表達式以及長電子郵件地址(如juicy.cakeballs2@cheeze-party.poonalicious.com
放入http://regexpal.com/。
該問題特定於Firefox 4+
誰能建議一種簡化正則表達式的方法或其他解決問題的方法?
麗莎,真讓我失望了!
問題在於重疊的類。 [ab]+[abc]+
可以通過多種不同方式匹配“ ababababc”。 為了減少回溯,請將其重構為[ab]+(c[ab]*)*
。 (我知道,重構的表達式與原始表達式的字符串不完全匹配。太懶了,無法發布適當的示例。谷歌“ regex backtracking”,不,現在購買並閱讀Friedl)。
作為記錄,大多數情況下要在JavaScript中“驗證”我的電子郵件地址的表單都會失敗。 我無法數出為了完成購買或訂閱而必須創建一個臨時電子郵件地址的次數。 驗證電子郵件地址的唯一可靠方法是嘗試發送電子郵件。 請不要再創建一個損壞的表單“驗證程序”。
一些在技術上有效的示例地址:
*@example.com
me@had.to.create.a.temp.address.again.i.run.my.own.dns.example.net
you.forgot@domain.example.museum
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.