Javascript String.replace with dynamic regular expressions?

I have the following code, which works, but I need to inject some different stuff into the regular expression object (regex2) at runtime. However, text.replace does not seem to like a string object for the regular expression, so how can I make this work?

var regex2 = /\|\d+:\d+/;
document.write("result = " + text.replace(regex2, '') + "<br>");

Answers:

Answer

You can make a regular expression object from a string using the RegExp constructor function:

var regExp = new RegExp(myString);  // regex pattern string

text.replace(regExp, '');
Answer

Addition to CMS: The RegExp constructor has an second optional parameter flags
(15.10.4 The RegExp Constructor)

var text = "This is a Test.";

var myRegExp = new RegExp('teST','i');

text.replace(myRegExp,'Example');
// -> "This is a Example."

as Flags you can set

  • g -> global search (all occurrences)
  • i -> case insensitive
  • m -> multiline
Answer
var value = "2012-09-10";
value = value.replace(/([0-9]{4})[\/-]([0-9]{2})[\/-]([0-9]{2})/,"$3/$2/$1");
alert(value);

this will show

10/09/2012
Answer

you can use eval to,

new RegExp( eval("/"+str+"/i") );

bye...

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.