记match返回结果的中groups
参考
总结
- ‘123’.match(/(1)(2)(3)/),结果中返回一个满足条件的字符串,然后根据括号对这个字符串进行拆分,一个括号就相当于push()一下
- 这时候无意义的下标对于后期在失去注释,或无意义/不全的注释的状态下维护,会让我们的维护增加难度
- 所以在括号内容前以?<名>的形式增加一个申明,例如(?<id>1)这样匹配之后,满足条件的内容会被以键值对的形式,存入groups中,这样有意义的键名,能在开发和维护中方便和轻松一点
demo
let str="id=1222&name=王五";
console.log(
str.match(/id=(?<id>\d+)([&\s*]|$)/),
str.match(/name=(?<name>\S+)([&\s]|$)/)
);
返回结果
(3) [“id=1222&”, “1222”, “&”, index: 0, input: “id=1222&name=王五”, groups: {…}]
0: “id=1222&”
1: “1222”
2: “&”
groups: {id: “1222”}
index: 0
input: “id=1222&name=王五”
length: 3
proto: Array(0)
(3) [“name=王五”, “王五”, “”, index: 8, input: “id=1222&name=王五”, groups: {…}]
0: “name=王五”
1: “王五”
2: “”
groups: {name: “王五”}
index: 8
input: “id=1222&name=王五”
length: 3
proto: Array(0)
我们可以通过结果的.groups[‘id’/‘name’]获取id/name值
> console.log(
str.match(/id=(?<id>\d+)([&\s*]|$)/).groups['id'],
str.match(/name=(?<name>\S+)([&\s]|$)/).groups['name']
);
//1222 王五