JavaScript - 正则表达式(二)

2019-10-16  本文已影响0人  ElricTang

正则表达式(一)传送门

四. 捕获组

表达式 描述
(x) 捕获分组(缓存分组内容)
console.log('123'.match(/([0-9])([0-9])([0-9])/));
// [ '123', '1', '2', '3', index: 0, input: '123', groups: undefined ]

一个括号就是一个分组,最后输出了匹配的字符串以及3个分组的内容。

  1. 在结果数组里获取
let res = '123'.match(/([0-9])([0-9])([0-9])/);
console.log(res[0]);// 123
console.log(res[1]);// 1
console.log(res[2]);// 2
console.log(res[3]);// 3
  1. RegExp.$n(n !== 0)
let res = '123'.match(/([0-9])([0-9])([0-9])/);
console.log(RegExp.$1);// 1
console.log(RegExp.$2);// 2
console.log(RegExp.$3);// 3
  1. 在表达式内反向引用(表达式内使用分组)
let res = 'aaa'.match(/([a-z])\1\1/);
console.log(res);

在表达式内部使用\number获取捕获分组内容

五. 非捕获组与断言(非捕获组中的(?=y)(?!y)(?<=y)(?<!y)被称为断言)

表达式 描述
(?:x) 匹配但不捕获
x(?=y) 先行断言,即x在y的前面才匹配,不捕获
x(?!y) 先行否定断言,即x不在y的前面才匹配,不捕获
(?<=y)x 后行断言,即x必须以y开头才匹配,不捕获
(?<!y)x 后行否定断言,即x开头不能为y,不捕获
上一篇 下一篇

猜你喜欢

热点阅读