在Javascript中添加多个变量以使用RegEx函数

时间:2016-05-14 21:04:49

标签: javascript regex string match

This发布详细信息如何在正则表达式中包含变量,但它仅显示如何包含一个变量。我目前正在使用正则表达式的匹配函数来查找前导和尾随字符串之间的字符串。我的代码如下:

array = text.match(/SomeLeadingString(.*?)SomeTrailingString/g);

现在,我怎么能构造一个与此功能相同的正则表达式,而不是让我在表达式中实际使用的两个字符串,我希望能够在外面创建它们,就像这样:

var startString = "SomeLeadingString"
var endString = "SomeTrailingString"

所以,我的最后一个问题是,如何将startString和endString包含在我上面列出的正则表达式中,以便功能相同?谢谢!

1 个答案:

答案 0 :(得分:3)

使用RegExp对象将字符串连接到regex

const reg = new RegExp(`${startString}(\\w+)${endString}`,"g");
const matches = text.match(reg);

注意

连接字符串时,建议转义无正则表达式字符串:(转义模式取自this回答)

const escapeReg = (str)=>str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');

示例

我们有字符串(.*)hello??,我们希望匹配(.*)??

之间的字词

我们会做类似的事情:

const prefix = "(.*)";
const suffix = "??";
const reg = new RegExp(`${escapeReg(prefix)}(\\w+)${escapeReg(suffix)}`);
const result = "(.*)hello??".match(reg);
if(result){
   console.log(result[1]); //"hello"
}