Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于替换double=mark中所有内容的JS和正则表达式_Javascript_Regex_Github Pages - Fatal编程技术网

Javascript 用于替换double=mark中所有内容的JS和正则表达式

Javascript 用于替换double=mark中所有内容的JS和正则表达式,javascript,regex,github-pages,Javascript,Regex,Github Pages,我正试图在GitHub页面上写博客。但GFM不支持像typora那样突出显示文本。我想做的是匹配一对“==”之间的所有内容(包括换行符)。因此,应选择以下文本 Edit the ==Expression= == & T==sa==ext to see matches. 改成 Edit the <span class="highlight">Expression= </span> & T<span class="highlight">sa<

我正试图在GitHub页面上写博客。但GFM不支持像typora那样突出显示文本。我想做的是匹配一对“==”之间的所有内容(包括换行符)。因此,应选择以下文本

Edit the ==Expression=
== & T==sa==ext to see matches.
改成

Edit the <span class="highlight">Expression=
</span> & T<span class="highlight">sa</span>ext to see matches.
编辑表达式=
&我想看比赛。
我想问的是

  • 我应该使用什么正则表达式来匹配?我得到了
    ={2}[^=]*={2}
    ,但那是不对的
  • 有没有简单的js可以替换?我希望我的网站使用尽可能少的JS

  • 非常感谢

    您可以通过反向引用和
    s
    标志非常清晰地执行此操作:

    let str=`编辑==表达式=
    ==&T==sa==ext以查看匹配项`
    让tags=str.replace(/==(.*?===/gs,$1'))
    
    log(标记)
    这使用惰性量词和反向引用


    ==(.*)==

    给你!这是一个使用超级秘密正则表达式替换函数技术的解决方案

    var testString=“编辑==表达式=\n==&T==sa==ext以查看匹配项。”;
    log(testString);
    log(testString.replace(/={2}([^=]=?)*={2}/g,函数(匹配){
    返回match.replace(“==”,“”)。replace(“==”,“”);
    
    }));您还可以使用以下正则表达式:

    ={2}(.*?)(?<!==)={2}
    
    ={2}(.*?)?
    使用对
    \1
    的反向引用,并用
    将其环绕(但解决方案更直接、更好,因为lookbehind仅在支持ECMA2018标准的浏览器中可用)


    演示:

    以下是我问题的完整解决方案:将
    ==
    环绕的文本替换为

    
    .亮点{
    背景颜色:黄色
    }
    
    ==asddac==awdawd=awda==wad==d==
    

    document.body.innerHTML=document.body.innerHTML.replace(/==([\s\s]*?)==/g,“$1”);
    看起来FireFox还不支持dotAll标志。它抛出了一个SyntaxErrorYeah,我也注意到了@mrReiha。希望很快-它在Node中,在webkit中工作。啊,我知道会有一种使用捕获组的方法,我只是不知道如何使用语法在字符串中引用它们。回答得好!谢谢ot的答案!很抱歉再次询问,但是有没有办法提供“esacpe”?例如,它应该解析euqal符号在text==
    旁边的位置,但保留由空格==
    包围的等号?