【发布时间】:2022-08-10 09:07:02
【问题描述】:
我在使正则表达式 Safari 兼容时遇到问题。
不幸的是,在 Safari 上的 JS 中不能使用lookbehind 功能: https://caniuse.com/?search=lookbehind
这就是为什么我必须将我的正则表达式转换为一个做同样但没有后视的正则表达式。
这是我在lookbehind中使用的正则表达式:
((?<!\\\\)}})
结果看起来像(粗体是匹配):
%{{你好,这是一个带有转义 \\}} 的测试,结尾应该在这里:}}
请注意 \\}} 不能匹配。
如果您想尝试,可以使用以下链接:https://regexr.com/6qq8k
有没有人知道如何做到这一点,而无需向后看?
当然,我之前已经在互联网上搜索过解决方案。经过一天多的搜索,我想在 StackOverflow 上尝试一下。
问题是,我正在使用 JS-Library (codemirror),我必须在其中传递正确的正则表达式。这意味着我以后无法修改匹配的结果,这会以某种方式排除我找到的所有解决方案。
所以我需要一个正则表达式,它在没有任何额外 JS 代码的情况下排除不需要的字符并找到正确的匹配项。
提前致谢
-
嗨@Andreas,感谢您的回答。当然,我之前已经在网上搜索过解决方案。问题是,我正在使用 JS-Library,我必须在其中传递正确的正则表达式。这意味着我以后无法修改匹配的结果。所以我需要一个正则表达式,它在没有任何额外 JS 代码的情况下排除不需要的字符并找到正确的匹配项。
-
\“问题是,我使用的是 JS-Library,...\”-> How do I ask a good question? -> 在问题本身中添加相关信息。\"我已经在寻找解决方案了......\"-> How much research effort is expected of Stack Overflow users? -> 显示在问题本身你已经做了(足够的)研究和/或你试图自己解决这个问题。
-
还有一个想法:如果在实践中,您的
}}总是在一个字母之后(不是空格或特殊字符,如括号、冒号或换行符),您可以使用\\b}}:) 如果前面有任何字符,那么我很漂亮确定你运气不好:/ -
嘿@Jay,谢谢你的尝试。不过看来我倒霉了^^
}}前面什么都可以写。
标签: javascript regex safari compatibility regex-lookarounds