有没有办法在 jQuery/Javascript 中将变量传递到 regex 中?
我想做这样的事情:
var variable_regex = "bar"; var some_string = "foobar"; some_string.match(/variable_regex/);
在 Ruby 中,你可以这样做:
some_string.match(/#{variable_regex}/)
发现了一个有用的帖子:
如何在 JavaScript 中连接 regex 文本?
Javascript 不支持 Ruby 那样的插值——你必须使用 RegExp构造函数:
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);