3

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?

2 Answers 2

1

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];});
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for the reply, but unfortunately it still does not work. I've tried both document.write(content.replace(/\{([^}]+)\}/g, test[RegExp.$1])); and document.write(content.replace(/\{([^}]+)\}/g, test["$1"]));
1

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!

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.