2011-03-29 77 views
4

我不知道這是否是IE8中的一個已知問題,但我無法真正找到任何信息。在IE8中輸入強制錯誤RegExp.exec()?

// The regex can vary but has to have a non-matching group defined: 
var re = /^(\s)?[\d]+$/i; 
// We call it with a string... 
re.exec("2"); 
// We call it with a number... 
re.exec(2); 

Firefox和Chrome(無法在Opera中試用它)對任何調用都沒有問題。但在IE8上,第二次調用失敗,並顯示「對象不支持該屬性或方法」。

這是已知的錯誤還是什麼?

+1

@works在我的電腦上的所有瀏覽器(+ ie8)上都很出色。 ;) – 2011-03-29 11:31:56

+0

你確定它不是第二次調用失敗的正則表達式嗎?你有沒有re.exec(「2」)試過它;行?它失敗了嗎? – jishi 2011-03-29 11:42:27

+0

@jishi是的。 @Caspar Kleijne嗯......我得深入瞭解一下。謝謝。 – 2011-03-29 14:25:32

回答

1

由於exec採取一個字符串,我會確保你傳遞一個字符串。通過傳遞一個數字我會說你正在試圖指望瀏覽器實現JavaScript的方式灰色地帶。

1

我在一個Ext JS 4應用程序中看到了相同的問題。很多事情都失敗了,因爲Ext JS似乎有時會在exec()方法中傳遞數字。問題原來是第三方庫SyntaxHighlighter。刪除這個還原了默認的IE8行爲和re.exec(2);工作。

我會建議減少你在你的應用中包含的外部JS,直到找到罪魁禍首。