将正则表达式保存的值作为数组索引传递

Passing regexp saved value as array index

本文关键字:数组 索引 正则表达式 保存      更新时间:2023-09-26

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

现在,链接保存在数组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>" );

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

附言我知道我可以制作循环并使用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

找到了解决方案:

function replacer(str, p1, p2 ){
    return "<a href='" + links[ p1 ] + "'></a>"
}
var newString = "XXzzzz".replace(/(X*)(z*)/, replacer)
虽然传递给replacer()的值作为

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