1

我需要替换[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>" );

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

PS我知道我可以制作循环并使用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从正则表达式匹配中获取的位置。

4

1 回答 1

1

找到了解决方案:

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

replacer()作为 p1 传递的值,p2 是匹配的值。p参数的数量replacer()需要作为匹配值的数量。

于 2012-05-14T14:21:42.040 回答