移动端浏览器不支持 (?<!exp) 正则应该如何解决

2020-05-07 16:35:31 +08:00
 gxz

最近需要写一个 markdown 编辑器,本来是没有问题的,在我电脑上一切工作正常。但切换到移动端浏览器后,正则处理就报错:

Uncaught SyntaxError: Invalid regular expression:: Invalid group

搜索发现是移动端浏览器不支持(?<!exp),所以我将原代码:

h1: new RegExp("(?<![\\S])#{1} (.*)",'g')

替换为:

h1: new RegExp("(?=[\\s]?)#{1} (.*)",'g')
or
h1: new RegExp("(?:\\s?)#{1} (.*)",'g')

这样却导致了它匹配所有字符串而不管它是否是单独的一行

请问正确的解决方法应该是?

1707 次点击
所在节点    JavaScript
2 条回复
VDimos
2020-05-07 17:35:01 +08:00
断言支持参差不齐,建议别用断言。
如果不得不用,可以考虑使用第三方正则引擎,比如 XRegExp 这些提供正则现代语法完整支持的库
jinliming2
2020-05-07 23:11:46 +08:00
使用第三方库,比如 XRegExp 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669338

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX