用匹配替换回调函数

时间:2010-08-03 11:01:12

标签: javascript

需要将<wiki>this page</wiki>替换为<a href='wiki/this_page'>this page</a>
使用回调函数:

text = text.replace(/<wiki>(.+?)<\/wiki>/g, function(match)
    {
        return "<a href='wiki/"+match.replace(/ /g, '_')+"'>"+match+"</a>";
    }
);

结果是标记<wiki>被保留(完全匹配) - <a href='wiki/<wiki>this_page</wiki>'><wiki>this page</wiki></a>

有没有办法获得匹配[0],匹配[1],如PHP的preg_replace_callback()

1 个答案:

答案 0 :(得分:74)

replace function's callback将匹配作为参数。

例如:

text = text.replace(/<wiki>(.+?)<\/wiki>/g, function(match, contents, offset, input_string)
    {
        return "<a href='wiki/"+contents.replace(/ /g, '_')+"'>"+contents+"</a>";
    }
);

(第二个参数是第一个捕获组)