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

Javascript IE8对这个简单正则表达式的解析不同于所有其他浏览器,javascript,regex,internet-explorer-8,Javascript,Regex,Internet Explorer 8,我试图使用此函数从值创建2结果 function split(val){ return val.split( /,\s*/ ); }; value = "Jim, "; var terms = split( value ); terms; 包括IE9在内的所有其他浏览器将生成terms=[“Jim”,“”] 然而,IE8和IE7可能会产生这样的结果:terms=[“Jim”] 有没有人有任何可能适用于IE8的建议或替代方案?您必须重写正则表达式 试试这个 String.prototype

我试图使用此函数从
值创建2结果

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

terms;
包括IE9在内的所有其他浏览器将生成
terms=[“Jim”,“”]

然而,IE8和IE7可能会产生这样的结果:
terms=[“Jim”]


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

您必须重写正则表达式

试试这个

String.prototype.trim = String.prototype.trim || function() {
    return this.replace(/^\s+|\s+$/g, ''); 
}
function split( str ){
    return (""+str).trim().split( /\,/ );
}

你最好选择:

val.split(',')
这似乎在所有浏览器中都能始终如一地工作

逗号后的任何尾随空格仍然必须在之后去掉。大致如下:

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

有趣的发现。IE8在使用字符串进行拆分(如本例中的“
”、“
”)时行为正常,但在正则表达式上拆分时,末尾没有空字符串。。。奇怪。另一种选择,请参见[[1]上的答案:您能解释一下在何种情况下您会担心数组中最后一个元素为空吗?请看我的编辑
'axx'.split('x')    // All browsers: ["a", "", ""]
'axx'.split(/x/)    // IE6/7/8: ["a"], all other browsers: ["a", "", ""]