Jake
Jake

Reputation: 633

How to replace regex to array element in Javascript

I met with the following problem. I wanted to replace a tag on the name of the corresponding element of the array string. Maybe a little awkwardly explain it, so I will show you the code:

var test = [];
test['some'] = 'Some test';
var content = '{some}';
document.write(content.replace(/{([^}]+)}/g, test[RegExp.$1])); // It doesn't work
document.write(test[RegExp.$1]); // It work

Now my question: why the replace tag is not getting the string held in the test ['some'] (get undefined)? During the second attempt to get normal string 'Some test'. How to fix it to properly converted tags when converting?

Upvotes: 3

Views: 440

Answers (2)

Jaykumar Patel
Jaykumar Patel

Reputation: 27614

Check this demo jsFiddle

JavaScript

var test = [];
test['some'] = 'Some test';
var content = '{some}';
document.write(content.replace(new RegExp('/{([^}]+)}/','g'), test['some'])); 
document.write(test['some']);

Result

{some}Some test

Here i check your regexp work perfect Hope this help you!

Upvotes: 1

anubhava
anubhava

Reputation: 784958

You need to escape { and } as they both are special regex symbols:

Use this regex:

/\{([^}]+)\}/g

EDIT: You need String#replace with custom function handler:

repl = content.replace(/\{([^}]+)\}/g, function($0, $1) {return test[$1];});

Upvotes: 1

Related Questions