y
修饰符的作用与g
修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于,g
修饰符只要剩余位置中存在匹配就可,而y
修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。(正则的扩展 - ES6 教程 - 网道 (wangdoc.com))
/y下一次检索开头的位置就必须为符合要求的,不然就会返回null 大概就是这么个意思
例如
let reg = /a+/g
let str = 'abca'
reg.exec(str) //第一次执行后得到a
reg.exec(str) //第二次执行后还会得到a
let reg2 = /a+/y
let str2 = 'abca'
reg.exec(str) //第一次执行后得到a
reg.exec(str) //第二次执行后因为剩余的字符串是bca 下标第一个是字母b 不符合a的字母 所以返回null