2011-03-29 78 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,直到找到罪魁祸首。