0

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

string.replace(/(http:\/\/\S*)/g, '<a href="$1" target="_blank">link<\/a>')

现在我的问题是是否有办法$1在替换之外访问捕获的数据等等。比如backrefarray[1]为了$1什么...

这样的事情可能吗?如何?

4

3 回答 3

2

是的,您可以使用 match :

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

(但数组从索引 0 开始)

于 2012-12-09T15:27:08.327 回答
2

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

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

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

于 2012-12-09T15:28:15.987 回答
1

正则表达式.$1

此外,在任何正则表达式操作完成后$1$2捕获变量(如果存在)可作为全局 RegExp 对象的属性在全局范围内使用。匹配成功后试试这个:

alert(RegExp.$1);
于 2012-12-09T17:18:59.863 回答