gmisuy
g 全局搜索。
i 不区分大小写搜索。
m 多行搜索。
s 允许 . 匹配换行符。
u 使用unicode码的模式进行匹配。
y 执行“粘性(sticky)”搜索,匹配从目标字符串的当前位置开始。
g-global m-multiline
g: 表示全局模式(global), 匹配到一个答案后跳过最后一个索引继续匹配. 使用量词时通常会遇到贪婪问题, 量词加问号即可免贪婪.
字符串: "abcabc".match(regex)
正则: /a.*c/g => [ 'abcabc' ]
正则: /a.*?c/g => [ 'abc', 'abc' ]
m: 表示多行模式(multiline), 可以进行多行匹配, ^和$代表每一行的起始和结束, 而不是整个输入的起始和结束.
y-sticky
只用一个超简单的例子就能演示出"粘滞"到底表现为什么:
/o/.test("foo") // true
/o/y.test("foo") // false, 相当于/^o/