如何使IE工作预期与正则表达式提供的函数参数在拆分函数
How to make IE to work expectedly with regular expressions provided as function argument in split function?
下面的代码可以在所有主流浏览器中正常工作,如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中运行代码时,我在数组的末尾得到一个空字符串,这可能不是有意的。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数