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, '[')
.replace(/\]/g, '\');
}
尝试将反向引用传递到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/