作为变量传递时,无法匹配正则表达式

时间:2019-07-05 19:23:21

标签: javascript regex

我正在尝试从以格式给出的字符串中选择文本

"saturday temp=hot cloudy=no rainy=maybe"

我想选择一个冒号后面的单词,我可以使用以下正则表达式来做到这一点:

(?<=temp=)[^e]+(?= )

这将选择单词“ hot”。

但是,当我尝试将正则表达式作为变量传递时,它返回为null。如下图所示

let input = "saturday temp=hot cloud=no rainy=maybe wet=no";
let str = `\\/(?<=temp=)[^e]+(?= )\\/`;

let match1 = input.match("(?<=temp=)[^e]+(?= )");
let match2 = input.match(new RegExp(str));
console.log(match1); // hot
console.log(match2); // null

1 个答案:

答案 0 :(得分:1)

在将正则表达式作为字符串传递时,请不要指定正则表达式定界符:

let input = "saturday temp=hot cloud=no rainy=maybe wet=no";
let str = `(?<=temp=)[^e]+(?= )`; // leading/trailing escape symbols and regex delims deleted

let match1 = input.match("(?<=temp=)[^e]+(?= )");
let match2 = input.match(new RegExp(str));
console.log(match1); // hot
console.log(match2); // hot