如何找到用Javascript捕获的组?

时间:2019-08-24 12:44:17

标签: javascript regex

我有一个正则表达式/(q)|([zZ])|(E)/。 我的问题是,如何使WHICH组匹配。

所以,如果我愿意 "ZqE".replace(/(q)|([zZ])|(E)/g, /* ??? */) 如何获得输出“ 213”?

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作,匹配的组将保留剩余的值,而未定义

CrawlerProcess

答案 1 :(得分:2)

您可以使用exec中的result数组找出匹配的组:

let re = /(q)|([zZ])|(E)/g;
while (result = re.exec('ZqE')) {
    console.log(result.findIndex((v, i) => i && typeof(v) !== 'undefined'));
}

答案 2 :(得分:0)

在模式中,您指定3个捕获组,编号从1到3。

如果您想获得“ 213”,并且知道要将q转换为1,将zZ转换为2,将E转换为3,则可以使用{{3} }。

let result = "ZqE".replace(/[ZzEq]/g, function(m) {
  if (m.toLowerCase() === 'z') return 2;
  if (m === 'q') return 1;
  if (m === 'E') return 3;
});
console.log(result);