将regexp保存的值作为数组索引传递

时间:2012-05-14 13:46:49

标签: javascript regex

我需要将[link]0[/link]替换为<a href=...

现在,链接保存在数组links中,[link][/link]内的数字是指向links索引的指针。

我正在尝试下一步:

txt.replace( /\[link\](\d+)\[\/link\]/ , "<a href='" + links[ THE_INDEX ][ 0 ] + "' target='_blank'>" + ( links[ THE_INDEX ][ 1 ] || links[ THE_INDEX ][ 0 ] ) + "</a>" );

但我不知道,如何传递保存的值。你能帮我解决一下吗?

P.S。我知道我可以创建循环并使用exec()来保存值并传递它,但我想知道,是否可以像我上面所说的那样去做。

更简单的期望例子

my_array = [ "data1", "data2", "data3" ];

"xxx1xxx".replace( /xxx(\d+)xxx/, "my_data=" + my_array[ THE_MATCH ] ); // should be "my_data=data1"
"xxx3xxx".replace( /xxx(\d+)xxx/, "my_data=" + my_array[ THE_MATCH ] ); // should be "my_data=data3"

从正则表达式匹配中取THE_MATCH

1 个答案:

答案 0 :(得分:1)

找到解决方案:

function replacer(str, p1, p2 ){
    return "<a href='" + links[ p1 ] + "'></a>"
}
var newString = "XXzzzz".replace(/(X*)(z*)/, replacer)

当值传递给replacer()作为p1时,p2是匹配值。 preplacer()个参数的数量必须与匹配值的数量相同。