В одном регулярном выражении мы сопоставляем часть, которая обычно пропускается, с проверочным утверждением href="<<merge_field>>
, а также необходимую вам часть <<merge_field>>
.
Это ONLY способ обойти дефицит внешнего вида в JS.
Это работает путем полного потребления плохой части и перемещения текущей позиции за ней
Существует НЕТ иначе, не обманывайтесь.
Это делается в обратном вызове замены строки.
В обратном вызове вы можете использовать логику для контроля того, что записывается как часть замены.
В нашем обратном вызове, если сопоставляется группа 1, мы просто возвращаем группу 1, таким образом, не изменяя ее содержимое.
Если группа 2 совпадает, вы можете решить, просто ли возвращать группу 2, ничего не меняя
(если вы просто записываете свою позицию или нажимаете элемент массива),
или просто измените ее нато, что ты хочешь.
var target = "href=\"<<merge_field>> and <<merge_field>> and href=\"<<merge_field>>";
var targ_new =
target.replace( /(href=["']<<merge_field>>)|(<<merge_field>>)/g,
function( match, grp1, grp2 ) {
if ( grp1 )
return grp1;
return "MRG"; // or return grp2 if just recording location
}
);
console.log( "Before:\r\n" + target);
console.log( "After:\r\n" + targ_new );