Javascript 用于替换double=mark中所有内容的JS和正则表达式
我正试图在GitHub页面上写博客。但GFM不支持像typora那样突出显示文本。我想做的是匹配一对“==”之间的所有内容(包括换行符)。因此,应选择以下文本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<
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}
,但那是不对的非常感谢 您可以通过反向引用和
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==
旁边的位置,但保留由空格==
包围的等号?