Javascript正则表达式不在IE中工作

时间:2010-06-21 13:47:24

标签: javascript jquery regex

所以我已经生成了这个表,每个单元格都有一个唯一的id,即r#c#,其中#是行/列。我有下面的代码从鼠标悬停时单元格的ID中提取行号和列号,它在firefox和chrome中工作正常,但在Internet Explorer中不起作用。

var cell_id = $(this).attr("id");
var matches = /[a-z]+(\d+)[a-z]+(\d+)/(cell_id);
var row = matches[1];
var col = matches[2];

为什么这不适用于资源管理器?

1 个答案:

答案 0 :(得分:3)

在Internet Explorer中,正则表达式不能用作函数。等效的是exec()方法,它是通过浏览器实现的。

var matches = /[a-z]+(\d+)[a-z]+(\d+)/.exec(cell_id);

<小时/> 感觉这个答案有点不完整,但没有提到Internet Explorer不是唯一一个不允许像函数一样执行正则表达式的浏览器。事实上,它是一个Mozilla扩展,它甚至没有在ECMAScript第3版或第5版中定义。您可以使用typeof运算符轻松检查是否支持它:

if (typeof / / == "function")
    // Regex can be used like a function
else if (typeof / / == "object")
    // Regex cannot be used like a function

我真的不明白为什么甚至要实现它,或者为什么你甚至想要检查它,最好只是谨慎一点并使用 exec 方法。< / p>