我正在尝试从静态文本和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.");
答案 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/)