V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
gxz
V2EX  ›  JavaScript

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

  •  1
     
  •   gxz · 2020-05-07 16:35:31 +08:00 · 1712 次点击
    这是一个创建于 1666 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近需要写一个 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')
    

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

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

    2 条回复    2020-05-07 23:11:46 +08:00
    VDimos
        1
    VDimos  
       2020-05-07 17:35:01 +08:00 via Android
    断言支持参差不齐,建议别用断言。
    如果不得不用,可以考虑使用第三方正则引擎,比如 XRegExp 这些提供正则现代语法完整支持的库
    jinliming2
        2
    jinliming2  
       2020-05-07 23:11:46 +08:00
    使用第三方库,比如 XRegExp 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1054 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:30 · PVG 04:30 · LAX 12:30 · JFK 15:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.