ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
修饰符(modifier)表示模式的附加规则,放在正则模式的最尾部。 修饰符可以单个使用,也可以多个一起使用。 ~~~ // 单个修饰符 var regex = /test/i; // 多个修饰符 var regex = /test/ig; ~~~ **(1)g 修饰符** 默认情况下,第一次匹配成功后,正则对象就停止向下匹配了。`g`修饰符表示全局匹配(global),加上它以后,正则对象将匹配全部符合条件的结果,主要用于搜索和替换。 ~~~ var regex = /b/; var str = 'abba'; regex.test(str); // true regex.test(str); // true regex.test(str); // true ~~~ 上面代码中,正则模式不含`g`修饰符,每次都是从字符串头部开始匹配。所以,连续做了三次匹配,都返回`true`。 ~~~ var regex = /b/g; var str = 'abba'; regex.test(str); // true regex.test(str); // true regex.test(str); // false ~~~ 上面代码中,正则模式含有`g`修饰符,每次都是从上一次匹配成功处,开始向后匹配。因为字符串`abba`只有两个`b`,所以前两次匹配结果为`true`,第三次匹配结果为`false`。 **(2)i 修饰符** 默认情况下,正则对象区分字母的大小写,加上`i`修饰符以后表示忽略大小写(ignoreCase)。 ~~~ /abc/.test('ABC') // false /abc/i.test('ABC') // true ~~~ 上面代码表示,加了`i`修饰符以后,不考虑大小写,所以模式`abc`匹配字符串`ABC`。 **(3)m 修饰符** `m`修饰符表示多行模式(multiline),会修改`^`和`$`的行为。默认情况下(即不加`m`修饰符时),`^`和`$`匹配字符串的开始处和结尾处,加上`m`修饰符以后,`^`和`$`还会匹配行首和行尾,即`^`和`$`会识别换行符(`\n`)。 ~~~ /world$/.test('hello world\n') // false /world$/m.test('hello world\n') // true ~~~ 上面的代码中,字符串结尾处有一个换行符。如果不加`m`修饰符,匹配不成功,因为字符串的结尾不是`world`;加上以后,`$`可以匹配行尾。 ~~~ /^b/m.test('a\nb') // true ~~~ 上面代码要求匹配行首的`b`,如果不加`m`修饰符,就相当于`b`只能处在字符串的开始处。加上`m`修饰符以后,换行符`\n`也会被认为是一行的开始。