js正则中使用命名分组
作者:edwin
日期:2018-06-07 11:40:31
所属分类:前端 - javascript

V8实现了正则命名分组功能

说明

正则里面有了命名分组,那么匹配结果会多了一个groups 的属性,这个属性中包含了一切命名分组的捕获结果

示例

1. exec中使用

const RE_DATE = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;

const matchObj = RE_DATE.exec('2018-06-07');
const year = matchObj.groups.year; // 2018
const month = matchObj.groups.month; // 06
const day = matchObj.groups.day; // 07

2. test反向引用中使用

const RE_TWICE = /^(?<word>[a-z]+)!\k<word>$/;
RE_TWICE.test('hello!hello'); // true
RE_TWICE.test('hello!word'); // false
等同于
const RE_TWICE = /^(?<word>[a-z]+)!\1$/;
RE_TWICE.test('hello!hello'); // true
RE_TWICE.test('hello!word'); // false

3. replace中使用

const RE_DATE = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
console.log('2018-06-07'.replace(RE_DATE,
    '$<month>/$<day>/$<year>'));
    // 06/07/2018

注意


. 如果可选的命名组不被匹配,则其属性值被设置为undefined,但key是仍存在
. 分组名不能有重复项

评论

全部评论 / 0