众所周知$1
,等等是在使用正则表达式时对 string.replace() 中捕获的组的反向引用,因此您可以执行以下操作:
string.replace(/(http:\/\/\S*)/g, '<a href="$1" target="_blank">link<\/a>')
现在我的问题是是否有办法$1
在替换之外访问捕获的数据等等。比如backrefarray[1]
为了$1
什么...
这样的事情可能吗?如何?
众所周知$1
,等等是在使用正则表达式时对 string.replace() 中捕获的组的反向引用,因此您可以执行以下操作:
string.replace(/(http:\/\/\S*)/g, '<a href="$1" target="_blank">link<\/a>')
现在我的问题是是否有办法$1
在替换之外访问捕获的数据等等。比如backrefarray[1]
为了$1
什么...
这样的事情可能吗?如何?
是的,您可以使用 match :
var array = str.match(/(http:\/\/\S*)/g);
(但数组从索引 0 开始)
您可以使用函数代替固定字符串:
string.replace(/(http:\/\/\S*)/g, function() {
return '<a href="'+arguments[1]+'" target="_blank">link<\/a>';
})
整个模式和每个组的匹配作为参数传递给函数。
此外,在任何正则表达式操作完成后$1
,$2
捕获变量(如果存在)可作为全局 RegExp 对象的属性在全局范围内使用。匹配成功后试试这个:
alert(RegExp.$1);