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
原文:https://www.cnblogs.com/connie313/p/14730577.html