Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript正则表达式拆分不跨浏览器_Javascript_Regex_Split - Fatal编程技术网

javascript正则表达式拆分不跨浏览器

javascript正则表达式拆分不跨浏览器,javascript,regex,split,Javascript,Regex,Split,我试图用三个关键字拆分字符串,如下所示: var option=$(this).text().split(/(To:|From:|Line:)/); $(this).text()用于测试“从:环形码头到:Manly线:F1 Manly” 所有“普通”浏览器都返回7个元素的数组,但IE7&8返回3个元素的数组 有什么想法吗?正则表达式拆分在所有浏览器中的工作方式都不一样,如所述 Internet Explorer从结果中排除几乎所有空值 数组(例如,当两个分隔符在 数据,或当分隔符出现在数据的

我试图用三个关键字拆分字符串,如下所示:

var option=$(this).text().split(/(To:|From:|Line:)/);
$(this).text()
用于测试“从:环形码头到:Manly线:F1 Manly”

所有“普通”浏览器都返回7个元素的数组,但IE7&8返回3个元素的数组


有什么想法吗?

正则表达式拆分在所有浏览器中的工作方式都不一样,如所述

  • Internet Explorer从结果中排除几乎所有空值 数组(例如,当两个分隔符在 数据,或当分隔符出现在数据的开头或结尾时)。 这对我来说没有任何意义,因为IE确实包含空值 当使用字符串作为分隔符时

  • Internet Explorer和Safari 不将捕获括号的值拼接到返回的数组中 (此功能可用于简单的解析器等。)

  • 火狐 不会将未定义的值拼接到返回的数组中作为结果 非参与捕获组

  • Internet Explorer、Firefox和 Safari还有各种附加的边缘案例bug,但它们并不遵循这些bug 拆分规范(实际上相当复杂)

(注意:这些行为在最近的浏览器中有所改变,不要依赖这些描述来实现特定于浏览器的算法!)

如果分隔符的顺序始终相同,那么对您来说是个好消息:您可能真正感兴趣的内容字符串将出现在所有浏览器中。因此,您只需测试数组的每个字符串,看看它是空字符串还是分隔符

如果字符串的分隔符顺序始终相同,则可能希望在所有浏览器中通过不捕获分隔符来去除它们:

var s = s.split(/To:|From:|Line:/);

如果您需要分隔符,因为它们的顺序可能会改变,那么您最好在
\b
上拆分,并检查所有字符串。

那么IE7/8中会发生什么情况?它会弹出一个包含三个未定义值的数组…您尝试拆分的文本是什么?所有浏览器都一样吗?您是否尝试
console.log($(this.text())?在ID 7/8中,它给出了
“[“环形码头”、“曼利”、“F1曼利”]”