在javascript正则表达式中的string.replace()之外访问$1等?

在javascript正则表达式中的string.replace()之外访问$1等?,javascript,regex,backreference,Javascript,Regex,Backreference,众所周知,$1等都是使用正则表达式时对string.replace()中捕获的组的反向引用,因此可以执行以下操作: string.replace(/(http:\/\/\S*)/g, '<a href="$1" target="_blank">link<\/a>') string.replace(/(http:\/\/\S*)/g,“link”) 现在我的问题是,在replace之外是否有方法访问$1等中捕获的数据。像是backrefarray[1]的$1之类的 这种

众所周知,
$1
等都是使用正则表达式时对string.replace()中捕获的组的反向引用,因此可以执行以下操作:

string.replace(/(http:\/\/\S*)/g, '<a href="$1" target="_blank">link<\/a>')
string.replace(/(http:\/\/\S*)/g,“link”)
现在我的问题是,在replace之外是否有方法访问
$1
等中捕获的数据。像是
backrefarray[1]
$1
之类的


这种事情可能发生吗?如何发生?

是的,您可以使用match:

var array = str.match(/(http:\/\/\S*)/g);

(但数组从索引0开始)

是的,您可以使用匹配:

var array = str.match(/(http:\/\/\S*)/g);

(但数组从索引0开始)

您可以使用函数替换,而不是使用固定字符串:

string.replace(/(http:\/\/\S*)/g, function() {
    return '<a href="'+arguments[1]+'" target="_blank">link<\/a>';
})
string.replace(/(http:\/\/\S*)/g,function(){
返回“链接”;
})

整个模式和每个组的匹配项作为参数传递给函数。

您可以使用函数代替固定字符串:

string.replace(/(http:\/\/\S*)/g, function() {
    return '<a href="'+arguments[1]+'" target="_blank">link<\/a>';
})
string.replace(/(http:\/\/\S*)/g,function(){
返回“链接”;
})
整个模式和每个组的匹配项作为参数传递给函数。

RegExp.$1 此外,在任何regexp操作完成后,
$1
$2
捕获变量(如果存在)作为全局regexp对象的属性在全局范围内可用。在成功匹配后尝试以下操作:

警报(RegExp.$1);
RegExp.$1 此外,在任何regexp操作完成后,
$1
$2
捕获变量(如果存在)作为全局regexp对象的属性在全局范围内可用。在成功匹配后尝试以下操作:

警报(RegExp.$1);

很好,谢谢。然而,秋葵的回答对我的情况要好一点+很好,谢谢。然而,秋葵的回答对我的情况要好一点+谢谢,我可以用这个+1并被接受(或者至少在10分钟结束后我会接受)!谢谢,我可以用这个+1并被接受(或者至少在10分钟结束后我会接受)!非常好,有点灵活+1非常好,有点灵活+1.