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)

p1として渡される値の間replacer()、p2は一致する値です。のp引数replacer()の量は、一致する値の量と同じである必要があります。

于 2012-05-14T14:21:42.040 に答える