我想只捕捉匹配部分的一个区域。我有以下字符串:
" 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: ["", ""]
如何在正则表达式的开头禁用捕获?
答案 0 :(得分:4)
我使用exec
循环。正则表达式为/(?:^|\s)type1-([^ ]+)/g
,例如"在字符串开头的type-1
之后或在空格之后,捕获所有内容直到下一个空格或字符串结尾。 (在给出您的字符串时,我们不需要与^
进行交替,但我想在字符串的开头允许"type1-class1"
。)然后我们在循环中收集捕获:< / p>
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;
答案 1 :(得分:0)
这是你期待的吗?
console.log(" type1-class1 type1-class2 type2-class4 type2-type1-class3 ".match(/ type1-.*?(?= )/g).map(x=>x.replace(/type1-/g,"").trim()))