replace callback function with matches

need to replace <wiki>this page</wiki> to <a href='wiki/this_page'>this page</a>
using callback function:

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

result is that tag <wiki> is preserved (full match) - <a href='wiki/<wiki>this_page</wiki>'><wiki>this page</wiki></a>

Is there a way to get matches[0], matches[1] as in PHP's preg_replace_callback()?

Answers:

Answer

The replace function's callback takes the matches as parameters.

For example:

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

(The second parameter is the first capture group)

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.