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

21 javascript regex

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

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

CMS*_*CMS 58

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

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

text.replace(regExp, '');
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是:*myString*是带有NO开头和结束标记的正则表达式,即不是"/ foo [123] /",而是"foo [123]". (28认同)

Ste*_*ger 25

添加到CMS:RegExp构造函数有第二个可选参数标志
(15.10.4 RegExp构造函数)

var text = "This is a Test.";

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

text.replace(myRegExp,'Example');
// -> "This is a Example."
Run Code Online (Sandbox Code Playgroud)

作为你可以设置的标志

  • g - >全局搜索(所有出现)
  • 我 - >不区分大小写
  • m - >多行


小智 5

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

这将显示

10/09/2012
Run Code Online (Sandbox Code Playgroud)