1. 正则的扩展

a. String.prototype.match等同于RegExp.prototype[Symbol.match]

b. y修饰符, 与g相似,也是全局匹配,后一次的匹配都从上一次匹配成功的下一个位置开始, 不同的是g是有就行, 而y必须是剩余的第一个位置开始, 所以叫“粘连”

var a='aaa_aaa'
var r1 = /a+/g
var r2=/a+/y
r1.exec(a) // ['aaa']
r2.exec(a) // ['aaa']

r1.exec(a) // ['aa']
r2.exec(a) // null

  

c. 先行和后行断言

先行断言:/x(?=y)/  x只有在y前面才匹配, /x(?!y)/   x只有不在y前面才匹配

后行断言:/(?<=y)x/    x只有在y后面才匹配      /(?<!y)x/   x只有不在y后面才匹配

后行断言要从右向左, /(?<=y)x/ 需要先匹配x,然后才匹配y

/(?<=(\d+)(\d+))$/.exec('1053') // ["","1", "053"] //从右向左, 贪婪模式
/^(\d+)(\d+)/.exec("1053") // ['1053', '105', '3']  //从左往右, 贪婪模式

  d

d. 具名组

const re_date=/(\d{4})-(\d{2})-(\d{2})/;

const matchObj = re_date.exec('1991-02-01');
matchobj[1] // 1991
matchobj[2]//2
matchobj[3]//1

const other_date=/(?<year>\d{4})-(?<month>\d{2})/
const matchedobj=other_date.exec('2021-09');
const year = other_date.groups.year // 2021
const month = other_date.groups.month

  

posted on 2021-05-04 23:13  connie313  阅读(91)  评论(0编辑  收藏  举报