javascript - 如何在函数中使用 javascript 正则表达式反向引用?

标签 javascript regex backreference

var string = input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig, '<noparse>'+removeBrackets('$1')+'</noparse>');

此表达式应该采用字符串并对包裹在 [noparse] 标记中的部分进行编码,以便它们不会在文本区域中呈现。

我对此进行了测试:

var string = input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig, '<noparse>test</noparse>');

和:

var string = input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig, '<noparse>'+String('$1')+'</noparse>');

并且它们起作用了(没有达到预期的效果)。

function removeBrackets(input){
return input
.replace(/\[/g, '&#91;')
.replace(/\]/g, '&#92;');
}

尝试将反向引用传递到removeBrackets函数时我做错了什么?

最佳答案

replace 将函数作为回调并在参数中传递捕获组:

var regex = /\[noparse\]([^\]]+)?\[\/noparse\]/ig;

string = string.replace(regex, function(_, match) {
  return '<tag>'+ removeBrackets(match) +'</tag>';
});

第一个参数_是完整的字符串,在大多数情况下是不必要的。

关于javascript - 如何在函数中使用 javascript 正则表达式反向引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16910374/

相关文章:

regex - 如何重新使用捕获组来匹配不同的交替选择?

javascript - 动态创建具有特殊形状的自定义 div 元素

javascript - 如何将公共(public)属性添加到所有对象的属性(速记)

长复杂字符串的Python正则表达式

regex - 转义正则表达式中的正斜杠

r - 将函数应用于 R 中 gsub 中的反向引用

javascript - 使用 javascript (thunderbird) 获取消息正文

javascript - CSS Flexbox div 自动更改顺序以填充空白

javascript - 正则表达式匹配模式 x 但返回任意字符串 y