如何测试以确定浏览器是不是支持 JS 正则表达式lookahead/lookbehind?
Posted
技术标签:
【中文标题】如何测试以确定浏览器是不是支持 JS 正则表达式lookahead/lookbehind?【英文标题】:How to test to determine if browser supports JS regex lookahead/lookbehind?如何测试以确定浏览器是否支持 JS 正则表达式lookahead/lookbehind? 【发布时间】:2020-02-20 17:14:07 【问题描述】:我有一个string.replace()
函数,它使用正则表达式后视。
myString.replace(/(?<!\\)'/gi, '"')
但是,我发现此功能目前对浏览器的支持有限。 https://caniuse.com/#feat=js-regexp-lookbehind
有没有办法使用 javascript 来测试用户的浏览器对该功能的支持?
类似于CSS.supports()
函数?
【问题讨论】:
您应该编写一次正则表达式以获得最大的兼容性。知道浏览器是否支持lookbehinds有什么好处?你打算创建多个正则表达式吗?如果是这样,那么您的备用正则表达式无论如何都是交叉兼容的可能性很高,那么为什么要坚持向后看呢?它只会让人头疼。 很公平。这个问题更多是为了满足我对某人如何管理新 ES 功能集成的好奇心,而不是为特定的生产应用程序寻找解决方案。 【参考方案1】:这将在 chrome 上返回 true
,在 safari 上返回 false
,没有任何 SyntaxError:
function supportsRegexLookAheadLookBehind()
try
return (
"hibyehihi"
.replace(new RegExp("(?<=hi)hi", "g"), "hello")
.replace(new RegExp("hi(?!bye)", "g"), "hey") === "hibyeheyhello"
);
catch (error)
return false;
【讨论】:
以上是关于如何测试以确定浏览器是不是支持 JS 正则表达式lookahead/lookbehind?的主要内容,如果未能解决你的问题,请参考以下文章