我正在使用JavaScript,并希望将所有内容与这样的自定义模板语言匹配:

Begin10
    Match THIS keyword and ANOTHER
End10


因此,我想使用10作为变量来找到Begin10来找到End10,并在它们之间匹配THIS和ANOTHER。
我看过捕获组。我认为这是要走的路,但我不知道如何构成该表达式。

我的代码需要将THISANOTHER作为语法突出显示的目标。

最佳答案

您可以对捕获的组使用正则表达式


var str = `Begin10
    Match THIS keyword and ANOTHER1
End10

Begin20
    Match THIS keyword and ANOTHER2
End20`;

console.log(
  str.match(/\bBegin(\d+)[\s\S]*?\bEnd\1\b/g)
);





要获取它们之间的字符串,请执行以下操作



var str = `Begin10
    Match THIS keyword and ANOTHER1
End10

Begin20
    Match THIS keyword and ANOTHER2
End20`;

var res = [],
  regex = /\bBegin(\d+)\s+([\s\S]*?)\s+\bEnd\1\b/g,
  match;

while (match = regex.exec(str)) {
  res.push(match[2]);
}

console.log(res);





Regex explanation here





更新:

如果它们之间只有THISANOTHER,请使用



var str = `Begin10
    THIS
End10

Begin20
    ANOTHER
End20`;

var res = [],
  regex = /\bBegin(\d+)\s+(THIS|ANOTHER)\s+\bEnd\1\b/g,
  match;

while (match = regex.exec(str)) {
  res.push(match[2]);
}

console.log(res);

关于javascript - 正则表达式与变量匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36835013/

10-10 18:46
查看更多