Cod*_*ler 4 javascript regex split internet-explorer-7
我试图({[^{}]*})
在javascript中使用此正则表达式进行拆分,然后我获得了不同的结果btw IE7和FF.firefox结果是正确的.
<style>
.box.round {
border-radius: 10px;
}
</style>
<script>
jQuery(function ($) {
$('style').each(function () {
text = $(this).html();
alert(text);
alert(text.split(/({[^{}]*})/));
// result in FF: .box.round ,{border-radius: 10px;},
// result in IE7: .box.round
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
更新 有没有办法更改正则表达式,以便它也可以在IE7中工作,而无需添加JavaScript库?
请参阅此旧博客文章,了解正则.split()
表达式中捕获组处理方式变化的可能解决方案.
从那篇文章:
- Internet Explorer从结果数组中排除几乎所有空值(例如,当两个分隔符在数据中彼此相邻时出现,或者在数据的开头或结尾出现分隔符时).这对我没有任何意义,因为IE在使用字符串作为分隔符时确实包含空值.
- Internet Explorer和Safari不会将捕获括号的值拼接到返回的数组中(此功能对于简单的解析器等非常有用)
- 作为非参与捕获组的结果,Firefox不会将未定义的值拼接到返回的数组中.
- Internet Explorer,Firefox和Safari有各种其他边缘案例错误,它们不遵循拆分规范(实际上非常复杂).
Levithan的XRegExp库非常小巧且有用,它包含了修复程序.