Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在函数中使用javascript正则表达式反向引用?_Javascript_Regex_Backreference - Fatal编程技术网

如何在函数中使用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语句,我有很多阅读要做。