IE和Firefox正则表达式问题

时间:2010-08-21 03:00:59

标签: javascript regex internet-explorer firefox

为什么IE和Firefox中的以下模式匹配结果不同?

var str = 'a,b,c , d,   e   ,f';
var matches = str.split(/(\s+)?,(\s+)?/);
alert(matches);

IE: 
a,b,c,d,e,f

firefox: 
a,,,b,,,c, , ,d,,   ,e,   ,,f

如何匹配IE结果? 请回答我:(

ie8和firefox v3.6.8

1 个答案:

答案 0 :(得分:3)

var str = 'a,b,c , d,   e   ,f';
var matches = str.split(/\s*,\s*/);
alert(matches);

您在Firefox中获取额外条目的原因是因为正则表达式中的括号(())被捕获为其他匹配项。这通常是预期的行为,我认为IE有一个bug,因为它没有这样做。在我的示例中,正则表达式中没有括号,因此您只获得匹配项之间的文本。