正则表达式圆括号和非捕获性圆括号

(x) 捕获性圆括号:匹配x,并捕获匹配项。

(?:x) 非捕获性圆括号: 匹配x,但是不捕获匹配项。

正则表达式一般情况下的匹配道德字符串称为分组0,按照匹配项中圆括号出现的顺序会获得分组1,分组2……等等

例如:

console.log(/([0-9])/.exec('3 + 4'));
console.log(/(?:[0-9])/.exec('3 + 4'));
console.log(/[0-9]/.exec('3 + 4'));
console.log(/([0-9])(\s)/.exec('3 + 4'));

//输出
//["3", "3"]  后边的 3 就是捕获组所获取的,最后一个例子是有两个捕获组所以会有三个元素(包含分组0)
//["3"]
//["3"]
//["3 ", "3", " "]

补充: 当圆括号后跟有*时,那捕获组获得的是最后一个值,示例代码:

var str = 'For more information, see Chapter 3.4.5.1';
var re = /see (chapter \d+(\.\d)*)/i;
var found = str.match(re);

console.log(found);
// logs [ 'see Chapter 3.4.5.1',
//        'Chapter 3.4.5.1',
//        '.1',
//        index: 22,
//        input: 'For more information, see Chapter 3.4.5.1' ]

// 'see Chapter 3.4.5.1' 是整个匹配。
// 'Chapter 3.4.5.1' 被'(chapter \d+(\.\d)*)'捕获。
// '.1' 是被'(\.\d)'捕获的最后一个值。
// 'index' 属性(22) 是整个匹配从零开始的索引。
// 'input' 属性是被解析的原始字符串。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值