【问题标题】:Passing regexp saved value as array index将正则表达式保存的值作为数组索引传递
【发布时间】:2012-05-14 13:46:48
【问题描述】:

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

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

附:我知道我可以制作循环并使用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 取自正则表达式匹配。

【问题讨论】:

  • 刚刚编辑了您的问题以尝试消除示例中的噪音。如果您不喜欢,请不要犹豫将其退回。

标签: javascript regex


【解决方案1】:

找到解决办法:

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

虽然作为 p1 传递给 replacer() 的值,但 p2 是匹配值。 replacer()p 参数的数量需要与匹配值的数量相同。

【讨论】:

猜你喜欢
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 2021-09-01
  • 2012-07-14
相关资源
最近更新 更多