如何使IE工作预期与正则表达式提供的函数参数在拆分函数

How to make IE to work expectedly with regular expressions provided as function argument in split function?

本文关键字:函数 参数 拆分 正则表达式 IE 何使 工作      更新时间:2023-09-26

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

目的:在第一个下划线(_)处分割字符串,产生子字符串"you"answers"and_me"。

IE只显示"you"部分,其余部分未定义。

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

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

如果你真的需要支持旧版本的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));

注:当我在Chrome中运行代码时,我在数组的末尾得到一个空字符串,这可能不是有意的。