如何在函数中使用javascript正则表达式反向引用?
如何在函数中使用javascript正则表达式反向引用?,javascript,regex,backreference,Javascript,Regex,Backreference,var string=input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig',+删除括号(“$1”)+” 此表达式应采用字符串并对包装在[noparse]标记中的部分进行编码,以便它们不会在文本区域中呈现 我的测试如下: var string=input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig,“test”) 以及: var string=input.replace(/\[noparse\]([
var string=input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig',+删除括号(“$1”)+”代码>
此表达式应采用字符串并对包装在[noparse]标记中的部分进行编码,以便它们不会在文本区域中呈现
我的测试如下:
var string=input.replace(/\[noparse\]([^\]]+)?\[\/noparse\]/ig,“test”)代码>
以及:
var string=input.replace(/\[noparse\]([^\]])?\[\/noparse\]/ig,“+string('$1')+”)”代码>
而且它们有效(没有预期的效果)
试图将back引用传递到removeColders函数中有什么错?replace
将函数作为回调函数,并传递参数中的捕获组:
var regex = /\[noparse\]([^\]]+)?\[\/noparse\]/ig;
string = string.replace(regex, function(_, match) {
return '<tag>'+ removeBrackets(match) +'</tag>';
});
var regex=/\[noparse\]([^\]]+)?\[\/noparse\]/ig;
string=string.replace(正则表达式,函数(\ux,匹配){
返回“”+删除括号(匹配)+“”;
});
第一个参数是完整字符串,在大多数情况下是不必要的。replace
将函数作为回调函数,并在参数中传递捕获组:
var regex = /\[noparse\]([^\]]+)?\[\/noparse\]/ig;
string = string.replace(regex, function(_, match) {
return '<tag>'+ removeBrackets(match) +'</tag>';
});
var regex=/\[noparse\]([^\]]+)?\[\/noparse\]/ig;
string=string.replace(正则表达式,函数(\ux,匹配){
返回“”+删除括号(匹配)+“”;
});
第一个参数是完整的字符串,在大多数情况下是不必要的。您的正则表达式将无法工作,因为您使用的负字符集中存在错误。这就解决了这个问题:
input.replace(/\[noparse\]([^\[]+)?\[\/noparse\]/ig, '<noparse>test</noparse>');
^
input.replace(/\[noparse\]([^\[]+)?\[\/noparse\]/ig,“test”);
^
然后,要执行实际的替换,您需要将函数作为第二个参数传递给.replace()
,而不是简单的字符串。您的正则表达式将无法工作,因为您使用的负字符集中有错误。这将修复它:
input.replace(/\[noparse\]([^\[]+)?\[\/noparse\]/ig, '<noparse>test</noparse>');
^
input.replace(/\[noparse\]([^\[]+)?\[\/noparse\]/ig,“test”);
^
然后,要执行实际的替换,您需要将一个函数作为第二个参数传递给.replace()
,而不是一个简单的字符串。[^\]+
应该是[^\[]+
您可能希望将MDN作为书签以备将来参考:[^\]+
应该是[^\[]+
您可能希望将MDN添加到书签中以供将来参考:尝试了此操作后,它不起作用。您能否解释一下添加的函数应该如何工作以及为什么工作?@user1755043:检查MDN以了解更多信息我的问题实际上是我需要使用([^\.]*)?
。谢谢你的帮助。尝试了这个,但没有成功。你能解释一下添加的函数应该如何工作以及为什么工作吗?@user1755043:检查MDN以了解更多信息我的问题实际上是我需要使用([^\.]*)?
。谢谢你的帮助。我一直使用的语法是([^\]+)对于许多其他表达式,它的工作原理是一样的。这两个表达式是否都可以接受,还是firefox发现了我的错误?@user1755043不,你的是错误的。它应该匹配,直到遇到一个左括号。我的问题实际上是我需要使用([^\.]*)?
。谢谢你的帮助。@user1755043这根本没有意义。我说得太快了。我实际上使用了([^]*)?
。关于如何组合regex语句,我有很多阅读工作要做。我已经对许多其他表达式使用了语法作为([^\]+)?
,它的工作原理也一样。可能两者都可以接受,还是firefox发现了我的错误?@user1755043不,你的错了。它应该匹配,直到遇到开口括号。我的问题实际上是我需要使用([^\.]*)?
。谢谢你的帮助。@user1755043这根本没道理。我说得太快了。我实际上使用了([^]*)?
。关于如何组合regex语句,我有很多阅读要做。