我有下面这段代码,它能够工作,但是我需要在运行时向正则表达式对象(regex2
)注入一些不同的东西。然而,text.replace
似乎不喜欢一个字符串对象用于正则表达式,那么我该如何让它工作呢?
var regex2 = /\|\d+:\d+/;
document.write("result = " + text.replace(regex2, '') + "<br>");
我有下面这段代码,它能够工作,但是我需要在运行时向正则表达式对象(regex2
)注入一些不同的东西。然而,text.replace
似乎不喜欢一个字符串对象用于正则表达式,那么我该如何让它工作呢?
var regex2 = /\|\d+:\d+/;
document.write("result = " + text.replace(regex2, '') + "<br>");
您可以使用RegExp构造函数从字符串中创建一个正则表达式对象:
var regExp = new RegExp(myString); // regex pattern string
text.replace(regExp, '');
CMS的补充:
RegExp
构造函数有一个可选的第二个参数flags。
(15.10.4 RegExp构造函数)
var text = "This is a Test.";
var myRegExp = new RegExp('teST','i');
text.replace(myRegExp,'Example');
// -> "This is a Example."
您可以设置以下标志:
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
你可以使用eval来,
new RegExp( eval("/"+str+"/i") );
再见...
RegExp
实例,而实际上只需要一个。 - David Harkness