如何使用在split函数中作为函数参数提供的正则表达式使IE工作正常?

时间:2015-09-24 04:12:46

标签: javascript regex internet-explorer

以下代码适用于所有主流浏览器,如Firefox,Opera,Chrome,Safari等,但在IE 6,7,8中显示出意想不到的结果(到目前为止我测试的版本)。

目标:将字符串拆分为第一个下划线(_),从而产生子串“you”和“and_me”。

IE只显示“你”部分,其余部分显示为未定义。

<script type="text/javascript">
 var str = "you_and_me";
 var res = str.split(/_(.+)?/);
 alert(res);
</script> 

解决方案:我该怎么做才能使IE正常工作?

1 个答案:

答案 0 :(得分:2)

如果你真的需要支持古老的IE版本,那么请停止使用带有正则表达式的.split(),然后编写自己的不使用正则表达式的分割函数。这应该比试图找出IE的旧版本有什么不稳定的正则表达式差异那样麻烦。

function oneSplit(s, sep) {
    var result = [];
    var i = s.indexOf(sep);
    if (i !== -1) {
        result.push(s.slice(0, i));
        result.push(s.slice(i + 1));
    } else {
        result.push(s);
    }
    return result;
}

var str = "you_and_me";
var result = oneSplit(str, "_");

document.write(JSON.stringify(result));

P.S。当我在Chrome中运行你的代码时,我在数组的末尾得到一个空字符串,这可能不是预期的。