IE8解析这个简单的正则表达式与所有其他浏览器不同

Tri*_*rip 9 javascript regex internet-explorer-8

我正在尝试使用此函数来创建2个结果value

function split(val){
  return val.split( /,\s*/ );
};
value = "Jim, ";
var terms = split( value );

terms;
Run Code Online (Sandbox Code Playgroud)

包括IE9在内的所有其他浏览器都会产生 terms = ["Jim", ""]

但是,IE8和IE7可能会产生这样的结果: terms = ["Jim"]

有没有人有任何可能适用于IE8的建议或替代方案?

Mat*_*lin 5

你可能会更好:

val.split(',')
Run Code Online (Sandbox Code Playgroud)

这似乎在所有浏览器中都能保持一致.

逗号后面的任何尾随空格仍然必须在之后被删除.有点像:

for (var i = 0; i < terms.length; i++) {
    terms[i] = terms[i].replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
Run Code Online (Sandbox Code Playgroud)

显然,在IE8及更早版本中,split()当使用正则表达式参数时,将忽略空字符串匹配.字符串参数工作正常:

'axx'.split('x')    // All browsers: ["a", "", ""]
'axx'.split(/x/)    // IE6/7/8: ["a"], all other browsers: ["a", "", ""]
Run Code Online (Sandbox Code Playgroud)