为什么以下正则表达式在IE中不起作用?

时间:2010-06-16 18:31:25

标签: javascript regex

为什么以下javascript正则表达式在Firefox中有效,但在IE中无效(在IE8上进行测试)。

myregexp = eval('/(?:^|;)\s*(\d+)\s*:[^;]*?megason[^;]*/gi');
myregexp.exec('0:QL12345ABC - MEGASONIAC BEST CAFE;'); //returns null in IE8

2 个答案:

答案 0 :(得分:1)

你必须添加斜杠:

myregexp = eval('/(?:^|;)\\s*(\\d+)\\s*:[^;]*?megason[^;]*/gi');

但正如克里所说,eval在这种背景下并不好用,而是使用:

myregexp = /(?:^|;)\s*(\d+)\s*:[^;]*?megason[^;]*/gi;

myregexp = new RegExp('(?:^|;)\\s*(\\d+)\\s*:[^;]*?megason[^;]*','gi');

答案 1 :(得分:0)

不建议使用eval,在这种情况下没有理由使用它。

另外,我会查看这个清单:
http://www.javascriptkit.com/javatutors/redev3.shtml

要查看是否要使用exec。