Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

replace callback function with matches

Tags:

javascript

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()?

like image 904
Qiao Avatar asked Aug 03 '10 11:08

Qiao


1 Answers

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)

like image 160
SLaks Avatar answered Sep 20 '22 23:09

SLaks