我正在使用JavaScript
,并希望将所有内容与这样的自定义模板语言匹配:
Begin10
Match THIS keyword and ANOTHER
End10
因此,我想使用10作为变量来找到
Begin10
来找到End10
,并在它们之间匹配THIS和ANOTHER。我看过捕获组。我认为这是要走的路,但我不知道如何构成该表达式。
我的代码需要将
THIS
和ANOTHER
作为语法突出显示的目标。 最佳答案
您可以对捕获的组使用正则表达式
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
更新:
如果它们之间只有
THIS
或ANOTHER
,请使用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/