66

有没有办法将变量传递给 jQuery/Javascript 中的正则表达式?

我想做类似的事情:

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

some_string.match(/variable_regex/);

在 Ruby 中,您可以执行以下操作:

some_string.match(/#{variable_regex}/)

找到一个有用的帖子:

如何在 JavaScript 中连接正则表达式文字?

4

4 回答 4

91

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

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

var matches = aString.match(new RegExp(pattern));
于 2009-11-08T07:17:10.267 回答
40

这简单:

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));
于 2009-11-08T07:23:26.587 回答
6

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

在浏览器控制台中试一试:

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

console.log(result);

于 2021-04-21T10:24:40.563 回答
-5

在字符串中包含变量的另一种方法是通过字符串插值。在 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}.`;
}
于 2020-10-14T15:01:04.010 回答