鍍金池/ 問答/Java  網(wǎng)絡(luò)安全  HTML/ 正則 exec方法 返回數(shù)組中 groups是用來存儲什么值的?

正則 exec方法 返回數(shù)組中 groups是用來存儲什么值的?

var reg = /d+/;
var str = 'ac123abc456abc';
var result = reg.exec(str);
console.log(result);
//=> result: ["123", index: 2, input: "ac123abc456abc", groups: undefined]
//=> groups 作用是什么?

回答
編輯回答
忘了我

groups是一個新的field,用來存儲命名捕獲組的信息:

let reg1 = /(\d)(\d)/
let str1 = '123'

console.log(reg1.exec(str1)) // => [12, 1, 2] 除去第一個以外的其他數(shù)據(jù)就是分組捕獲到的數(shù)據(jù),但是因為是一個數(shù)組,所以會存在一個記憶成本

// 命名捕獲組的獲取
let reg1 = /(?<first>\d)(?<second>\d)/
let str2 = '123'

console.log(reg2.exec(str2).groups) // => { first: 1, second: 2 } 而新的語法支持對這些捕獲組進行命名,更方便地獲取某個捕獲組的數(shù)據(jù)

語法為:(?<捕獲組的名字>捕獲組對應(yīng)的規(guī)則)

可以參考之前寫的一篇文章,里邊有提到:https://segmentfault.com/a/11...

2017年8月4日 13:30
編輯回答
懶豬

將你的例子中 reg 改成 /(\d+)/ 其中的括號括住的部分叫“捕獲”,對應(yīng)英文是group。
exec中結(jié)果中的group用于列舉 “有名有姓”的捕獲。

再改一下 reg為 /(?<test>\d+)/,其中的?<test>代表捕獲的“名字”為test,你執(zhí)行一下,就會看到result.groups中多出一個名為test的屬性,其中對應(yīng)的值就是\d+匹配到得文本。

2017年2月28日 06:07