如何在 jQuery/Javascript 中将变量传递到 regex

有没有办法在 jQuery/Javascript 中将变量传递到 regex 中?

我想做这样的事情:

var variable_regex = "bar";
var some_string = "foobar";


some_string.match(/variable_regex/);

在 Ruby 中,你可以这样做:

some_string.match(/#{variable_regex}/)

发现了一个有用的帖子:

如何在 JavaScript 中连接 regex 文本?

63408 次浏览

Javascript 不支持 Ruby 那样的插值——你必须使用 RegExp构造函数:

var aString = "foobar";
var pattern = "bar";


var matches = aString.match(new RegExp(pattern));

很简单:

var variable_regex = "bar";
var some_string = "foobar";


some_string.match(variable_regex);

如果你想使用复杂的正则表达式,你可以使用字符串串联:

var variable_regex = "b.";
var some_string = "foobar";


alert (some_string.match("f.*"+variable_regex));

另一种在字符串中包含变量的方法是通过字符串插值。在 JavaScript 中,您可以使用模型文字在字符串中插入或内插变量:

var name = "Jack";
var id = 123321;


console.log(`Hello, ${name} your id is ${id}.`);

注意: 注意不要将引号或撇号与严肃的重音(‘)混淆。

你可以在函数中使用:

function myPhrase(name, id){
return `Hello, ${name} your id is ${id}.`;
}

这很简单,您需要创建一个带有变量的 RegExp实例。 当我搜索答案时,我还希望这个字符串被内插关于变量。

在浏览器控制台尝试一下:

const b = 'b';
const result = (new RegExp(`^a${b}c$`)).test('abc');


console.log(result);