在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.