我正在使用以下regext (?<=")[^"]+(?=")|\w{3,}/g
。但是我注意到它在Safari中不起作用:https://caniuse.com/js-regexp-lookbehind
我如何才能实现同样的工作在Safari以及?我正在寻找一个正则表达式或香草JS解决方案。
它需要实现的目标:
如果输入:xyz I am in the United States
,输出应为:
["xyz", "the", "United", "States"]
如果输入xyz I am "in the United States"
输出。应该是:
["xyz", "in the United States"]
因此,它应该丢弃所有的话:
- 少于2个字符且不在双引号内
- 如果1或2个字符的单词在双引号内,则不应丢弃它们
总之,相同的功能,把字符串到数组中,但与Safari太...
请帮帮忙
2条答案
按热度按时间tf7tbtn21#
使用捕获组:
上面的解决方案可以用
.matchAll
和解构更容易地完成,但是我想我不应该冒险使用新的特性,因为你不支持向后看。或者,您可以使用
replace
,但实际上放弃了它的主要效果,只使用副作用:v6ylcynt2#
我今天在Safari上遇到了这个
regex
lookbehind
问题,并(最终)提出了一个解决方案:split()
replace()
/replaceAll()
下面的工作示例(使用相同的方法)是一种解决问题的方法,在2022年6月,Safari(尚未)理解
regex
lookbehinds
。示例: