RegExp排除代码和预标签之间的匹配

时间:2015-09-22 16:20:58

标签: javascript regex

我正在创建一个gulp插件来动态地重新激活URL,但显然希望避免更改<code><pre>标记内的任何引用。该插件以特定格式搜索引用,但在Javascript正则表达式中没有负面的后视,我不确定如何排除<code><pre>中的引用。

现在,我的正则表达式如下。有没有办法让我编辑它以排除<code><pre>之间的网址,或者包含那些匹配后用于过滤事后的标记?

var handle = /*handle for referential directory*/;
var search = new RegExp('(?:=|url\()\s?[\'\"](' + handle + ')\/\/(\S+)[\'\"]\s?(?:\))?','g');

1 个答案:

答案 0 :(得分:0)

在PCRE兼容的正则表达式中,简单的方法是使用<code>.*?</code>(*SKIP)(*FAIL)|http.......(其中.......是您首选的URL检测正则表达式)但JS没有这么奢侈。

但是,你可以做的是......

result = input.replace(/(<code>.*?<\/code>)|(http.....)/g,function(m,code,url) {
    if( code) return code; // code block, leave unchanged
    // do something with url here
});