gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:51:25 25 4
gpt4 key购买 nike

我正在尝试用三个关键字拆分一个字符串,如下所示:

var option=$(this).text().split(/(To:|From:|Line:)/);

$(this).text() 用于测试目的“From:Circular Quay To:Manly Line:F1 Manly”

所有“普通”浏览器返回一个包含 7 个元素的数组,但 IE7 和 8 返回一个包含 3 个元素的数组。

有什么想法吗?

最佳答案

正如 this article 所描述的那样,正则表达式拆分在所有浏览器中的工作方式并不相同。 .

  • Internet Explorer excludes almost all empty values from the resulting array (e.g., when two delimiters appear next to each other in the data, or when a delimiter appears at the start or end of the data). This doesn't make any sense to me, since IE does include empty values when using a string as the delimiter.

  • Internet Explorer and Safari do not splice the values of capturing parentheses into the returned array (this functionality can be useful with simple parsers, etc.)

  • Firefox does not splice undefined values into the returned array as the result of non-participating capturing groups.

  • Internet Explorer, Firefox, and Safari have various additional edge-case bugs where they do not follow the split specification (which is actually quite complex).

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

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

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

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

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

关于javascript正则表达式拆分不跨浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17647841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com