我有一个正则表达式/(q)|([zZ])|(E)/
。
我的问题是,如何使WHICH组匹配。
所以,如果我愿意
"ZqE".replace(/(q)|([zZ])|(E)/g, /* ??? */)
如何获得输出“ 213”?
答案 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);