正则表达式中的模式修饰符用于控制匹配规则的细节,包括是否忽略大小写、是否以多行方式匹配、是否全局匹配等。在 JavaScript 中,模式修饰符是以单字符的形式放置在正则表达式的末尾,并且通过正则表达式的对象方法来使用。

1. i 修饰符(忽略大小写)
i 修饰符用于在匹配时忽略大小写。即无论目标字符串中的字母是大写还是小写,都能匹配成功。例如,正则表达式 /abc/i 将匹配字符串 "abc"、"aBc"、"AbC" 等。

示例代码如下:

var pattern = /abc/i;
var result = pattern.test("aBc");
console.log(result);  // true
JavaScript

2. g 修饰符(全局匹配)
g 修饰符用于进行全局匹配,即在目标字符串中查找所有匹配的子串,而不仅仅是第一个匹配的子串。例如,正则表达式 /abc/g 将匹配字符串 "abcabcabc" 中的所有 "abc"。

示例代码如下:

var pattern = /abc/g;
var str = "abcabcabc";
var result = str.match(pattern);
console.log(result);  // ["abc", "abc", "abc"]
JavaScript

3. m 修饰符(多行匹配)
m 修饰符用于进行多行匹配,即允许目标字符串中的换行符自成一行,并且在匹配时也会考虑换行符。例如,正则表达式 /^abc/m 将匹配以 "abc" 开头的所有行。

示例代码如下:

var pattern = /^abc/m;
var str = "abc\nabc\n123\nabc";
var result = str.match(pattern);
console.log(result);  // ["abc", "abc"]
JavaScript

4. s 修饰符(单行匹配)
s 修饰符用于进行单行匹配,即将目标字符串视为单行,并在匹配时不考虑换行符。例如,正则表达式 /abc.*def/s 将匹配以 "abc" 开始,以 "def" 结束,且中间包含任意字符的所有字符串。

示例代码如下:

var pattern = /abc.*def/s;
var str = "abc\ndef\nghi\ndef";
var result = str.match(pattern);
console.log(result);  // ["abc\ndef\nghi\ndef"]
JavaScript

除了上述四种常见的模式修饰符之外,还有一些其他的模式修饰符,例如 u 修饰符(开启 Unicode 模式)和 y 修饰符(粘连匹配模式)。根据需求选择恰当的模式修饰符,可以更精确地进行字符串匹配。