PHP中的正则表达式支持以下修饰符:
i
:不区分大小写。例如,/foo/i
会匹配 “foo”、“FOO” 和 “Foo”。m
:多行模式。这会使 ^
和 $
匹配每一行的开始和结束,而不仅仅是整个字符串的开始和结束。例如,/^foo/m
会匹配字符串中每一行开头的 “foo”。u
:UTF-8 模式。这允许正则表达式处理 Unicode 字符。例如,/\p{L}/u
会匹配 Unicode 字符集中的任何字母字符。s
:让 .
匹配换行符。在默认情况下,.
不匹配换行符。使用 s
修饰符,.
会匹配包括换行符在内的任何字符。例如,/foo.bar/s
会匹配 “foo” 后跟任何字符(包括换行符),直到遇到 “bar”。x
:忽略空白和注释。这允许你在正则表达式中添加注释,并且 \s
和 \n
等字符会被忽略。例如,/foo\s+bar/x
会匹配 “foo” 后跟一个或多个空白字符,然后是 “bar”。e
:使用 PHP 函数解析正则表达式。这允许你在正则表达式中使用 PHP 函数,例如 preg_replace
。例如,/foo/{echo "Hello, World!";}/e
会执行 echo "Hello, World!";
并在匹配 “foo” 的位置替换它。A
:使正则表达式成为断言。这允许你使用条件逻辑来构建更复杂的匹配规则。例如,/(?=foo)/
会匹配任何位于 “foo” 前面的位置。D
:使 ^
和 $
匹配每一行的开始和结束,而不仅仅是整个字符串的开始和结束。这与多行模式类似,但通常用于单行字符串。S
:让 .
匹配包括换行符在内的任何字符。这与 s
修饰符类似,但通常用于单行字符串。U
:非贪婪模式。这会使正则表达式尽可能少地匹配字符。例如,/foo.*?bar/U
会匹配 “foo” 和 “bar” 之间的尽可能少的字符。L
:让 \w
、\W
、\d
、\D
、\s
和 \S
匹配 Unicode 字符。这与 UTF-8 模式类似,但通常用于单个字符。N
:使 \w
、\W
、\d
、\D
和 \s
匹配 Unicode 字符序列,而不是单个字符。这与 Unicode 模式类似,但通常用于单个字符。X
:忽略正则表达式中的空白和注释。这与 x
修饰符类似,但通常用于单个字符。