笔记--正则命名捕获

记match返回结果的中groups

参考

  1. 命名捕获分组

总结

  1. ‘123’.match(/(1)(2)(3)/),结果中返回一个满足条件的字符串,然后根据括号对这个字符串进行拆分,一个括号就相当于push()一下
  2. 这时候无意义的下标对于后期在失去注释,或无意义/不全的注释的状态下维护,会让我们的维护增加难度
  3. 所以在括号内容前以?<名>的形式增加一个申明,例如(?<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 王五
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值