2015-09-22 52 views
0

我正在創建一個gulp插件來動態地相關URL,但顯然希望避免更改<code><pre>標籤中的任何引用。該插件以特定的格式搜索引用,但在JavaScript正則表達式中沒有負向後視,我不確定如何排除<code><pre>中的引用。RegExp排除代碼和Pre標籤之間的匹配

現在,我的正則表達式如下所示。有沒有辦法讓我編輯它以排除<code><pre>之間的URL,或者將這些標記與匹配的事件進行事後過濾?

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

回答

0

在PCRE兼容的正則表達式,簡單的方法是使用<code>.*?</code>(*SKIP)(*FAIL)|http.......(其中.......是首選網址檢測正則表達式),但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 
});