我需要将[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
。
答案 0 :(得分:1)
找到解决方案:
function replacer(str, p1, p2 ){
return "<a href='" + links[ p1 ] + "'></a>"
}
var newString = "XXzzzz".replace(/(X*)(z*)/, replacer)
当值传递给replacer()
作为p1时,p2是匹配值。
p
中replacer()
个参数的数量必须与匹配值的数量相同。