从JS变量构建正则表达式不起作用

时间:2011-07-23 19:01:21

标签: javascript regex

我正在尝试从静态文本和javascript中的变量构建正则表达式。显然我遗漏了一些非常基本的东西,请参阅下面的代码中的注释。非常感谢帮助:

var test_string = "goodweather";

// One regexp we just set: 
var regexp1 = /goodweather/;

// The other regexp we built from a variable + static text:
var regexp_part = "good";
var regexp2 = "\/" + regexp_part + "weather\/";

// These alerts now show the 2 regexp are completely identical:
alert (regexp1);
alert (regexp2);

// But one works, the other doesn't ??
if (test_string.match(regexp1))
  alert ("This is displayed.");

if (test_string.match(regexp2))
  alert ("This is not displayed.");

4 个答案:

答案 0 :(得分:16)

答案 1 :(得分:2)

您应该使用RegExp构造函数来完成此任务:

var regexp2 = new RegExp(regexp_part + "weather");

这是related question可能会有所帮助。

答案 2 :(得分:1)

正斜杠只是用于包含常规表达式的Javascript语法。如果使用普通字符串作为正则表达式,则不应包含它们,因为它们将被匹配。因此,您应该像这样构建正则表达式:

var regexp2 = regexp_part + "weather";

答案 3 :(得分:0)

我会用:

var regexp2 = new RegExp(regexp_part+"weather");

就像你做到的那样:

var regexp2 = "/goodweather/";

之后:

test_string.match("/goodweather/")

使用与字符串的匹配,而不是像你想要的那样使用正则表达式:

test_string.match(/goodweather/)