带有动态正则表达式的Javascript String.replace?

时间:2009-07-31 22:23:53

标签: javascript regex

我有以下代码,但是我需要在运行时向正则表达式对象(regex2)注入一些不同的东西。但是,text.replace似乎不喜欢正则表达式的字符串对象,所以我该如何使它工作?

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

4 个答案:

答案 0 :(得分:55)

您可以使用RegExp构造函数从字符串中创建正则表达式对象:

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

text.replace(regExp, '');

答案 1 :(得分:24)

加入CMS: RegExp构造函数有第二个可选参数标志
(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."

你可以设置标志

  • g - &gt;全局搜索(所有事件)
  • i - &gt;不区分大小写
  • m - &gt;多线

答案 2 :(得分:4)

var value = "2012-09-10";
value = value.replace(/([0-9]{4})[\/-]([0-9]{2})[\/-]([0-9]{2})/,"$3/$2/$1");
alert(value);

这将显示

10/09/2012

答案 3 :(得分:-3)

你可以使用eval,

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

...再见