正则表达式 - Javascript捕获区域

时间:2016-09-05 10:48:51

标签: javascript regex

我想只捕捉匹配部分的一个区域。我有以下字符串: " type1-class1 type1-class2 type2-class4 type2-type1-class3 " 我想要关注结果["class1", "class2"]。 我正在type搜索班级。 我试过以下:

console.log(" type1-class1 type1-class2 type2-class4 type2-type1-class3 ".match(/\btype1-.*?(?= )/g))
// Result: ["type1-class1", "type1-class2", "type1-class3"]

此外,我试过以下:

console.log(" type1-class1 type1-class2 type2-class4 type2-type1-class3 ".match(/(?= type1-).*?(?= )/g));
// Result: ["", ""]

如何在正则表达式的开头禁用捕获?

2 个答案:

答案 0 :(得分:4)

我使用exec循环。正则表达式为/(?:^|\s)type1-([^ ]+)/g,例如&#34;在字符串开头的type-1之后或在空格之后,捕获所有内容直到下一个空格或字符串结尾。 (在给出您的字符串时,我们不需要与^进行交替,但我想在字符串的开头允许"type1-class1"。)然后我们在循环中收集捕获:< / p>

&#13;
&#13;
var rex = /(?:^|\s)type1-([^ ]+)/g;
var str = " type1-class1 type1-class2 type2-class4 type2-type1-class3 ";
var classes = [];
var m;
while ((m = rex.exec(str)) != null) {
  classes.push(m[1]);
}
console.log(classes);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这是你期待的吗?

console.log(" type1-class1 type1-class2 type2-class4 type2-type1-class3 ".match(/ type1-.*?(?= )/g).map(x=>x.replace(/type1-/g,"").trim()))