2015-09-22 2 views
0

Я создаю плагин gulp для динамического преобразования URL-адресов, но, очевидно, хочу избежать изменения ссылок внутри <code> или <pre> тегов. Плагин ищет ссылки в определенном формате, но без негативных обратных задержек в регулярных выражениях Javascript, я не уверен, как исключить ссылки внутри <code> или <pre>.RegExp Исключить совпадения между кодом и предварительными тегами

Прямо сейчас, мое регулярное выражение похоже на следующее. Есть ли способ изменить его, чтобы исключить URL-адреса между <code> или <pre> или включить теги с соответствием для фильтрации после факта?

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

ответ

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 
}); 
Смежные вопросы