正则表达式修饰符,正则表达式匹配模式,正则表达式全局匹配,正则表达式多行匹配,正则表达式忽略大小写匹配

正则表达式修饰符,正则表达式匹配模式,正则表达式全局匹配,正则表达式多行匹配,正则表达式忽略大小写匹配

正则修饰符

正则表达式的修饰符是用于指定额外的匹配策略,该修饰符不在正则表达式中,放在正则表达式外 正则修饰符包含

  • g 全局匹配
    • 正则表达式中没有 ^ 时,以整个字符串(单行/多行)的开头为开始(^),以整个字符串(单行/多行)的结尾为结束($)
    • 正则表达式中含有 ^ 时,只匹配第一行
  • m 多行匹配
    • 启用多行模式后,只影响 ^ 和 $ 的行为
    • 通常与全局匹配一起使用,否则也只匹配第一行
  • i 忽略大小写匹配

默认情况下是非全局匹配,非多行匹配,大小敏感匹配

修饰符使用方式

let exp1 = /abc/i;
console.log( "ABC".match(exp1) );   // ["ABC"]

let exp2 = new RegExp('abc', 'i');
console.log( "ABC".match(exp2) );   // ["ABC"]

全局匹配修饰符 g

let txt = `hello world1\nhello world2`

// 默认情况下只匹配第一个匹配项
console.log( txt.match(/hello/) );          // ["hello"]

// 使用 全局匹配修饰符g 后,会返回所有的匹配项
console.log( txt.match(/hello/g) );         // ["hello","hello"]

// 在使用 全局匹配修饰符 时,如果正则中包含 ^ 时,只会匹配第一行
console.log( txt.match(/^hello/g) );        // ["hello"]

// 在使用 全局匹配修饰符 时,如果正则中没有 ^, 有 $ 时,匹配的是整个字符串的结尾
console.log( txt.match(/world1$/g) );       // null
console.log( txt.match(/world2$/g) );       // ["world2"]

多行匹配修饰符 m

let txt = `hello world1\nhello world2`

// 默认情况下只匹配第一个匹配项
console.log( txt.match(/hello/) );          // ["hello"]

// 使用 多行匹配修饰符m 后,由于没使用全局匹配,所以也只会匹配第一行
console.log( txt.match(/hello/m) );         // ["hello"]

// 同时使用 多行匹配修饰符m 与 全局匹配修饰符g,会匹配所有行
console.log( txt.match(/^hello/gm) );        // "hello","hello"]

忽略大小写修饰符 i

let txt = `hello world1\nhello world2`

// 默认情况下匹配大小写敏感
console.log( txt.match(/HELLO/) );          // null

// 使用 护理大小写修饰符i 后,忽略大小写匹配
console.log( txt.match(/HELLO/i) );         // ["hello"]