在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網(wǎng)絡(luò)安全  HTML/ 正則如何匹配多個(gè)分組?

正則如何匹配多個(gè)分組?

代碼如下,需要匹配 '+兩位數(shù)字' 并捕獲 其中兩個(gè)數(shù)字,或匹配 '+{三位數(shù)字}' 并捕獲其中三位數(shù)字;

var a='+12+{123}+{123}+12+12+{123}'
a.replace(/\+([\d]{2})|\+{([\d]{3})}/gi,(x,y,z)=>{
console.log(x);
console.log(y);
console.log(z);
})

如果這樣用'|'分割表達(dá)式的話,即使匹配的是'+{三位數(shù)字}',也會(huì)傳給 第一個(gè)捕獲分組(y)undefined,第二個(gè)(z)才是捕獲的三位數(shù)字。
因?yàn)?多個(gè)分組 用'|' 或的話, 是從 表達(dá)式開始 按 左括號(hào)順序,進(jìn)行分組編號(hào)。
請(qǐng)問下 多個(gè)分組 '或' 的話,怎么 不從表達(dá)式開始 進(jìn)行分組編號(hào),而是 單獨(dú)分組編號(hào)?

回答
編輯回答
挽歌

你只要多加個(gè)判斷是否為undefined就行了,然后取那個(gè)不是undefined的
或者可以這么寫【參考】:

var str="+12+{123}+{123}+12+{123}+12+{123}+{123,098}+123+6787+543";
var result=str.match(/\+(\d{2}\b|{\d{3}})/g).map(function(matchStr){
return matchStr.match(/\d+/)[0];
});
2018年7月19日 21:29
編輯回答
拼未來

換個(gè)思路行么?

var a='+12+{123}+{123}+12+12+{123}'
a.replace(/(\d{2,3})/gi,(x,y,z)=>{
console.log(`x:${x}`);
console.log(`y:${y}`);
console.log(`z:${z}`);
})
2018年6月13日 22:07