手册目录

PHP课程

浏览10489
更新时间2025-08-06

什么是正则表达式?

正则表达式是由字符组成的搜索模式。当您在文本中搜索数据时,可以使用此搜索模式来描述您要查找的内容。

正则表达式可以是一个单个字符,也可以是一个更复杂的模式。

正则表达式可用于执行各种类型的文本搜索和文本替换操作。

语法

在 PHP 中,正则表达式是由分隔符、模式和可选修饰符组成的字符串。

$exp = "/w3school/i";

在上面的例子中,/分隔符w3school 是要搜索的模式i 是一个修饰符,它使搜索不区分大小写。

分隔符可以是任何非字母、非数字、非反斜杠和非空格的字符。最常见的分隔符是正斜杠(/),但当您的模式包含正斜杠时,选择其他分隔符(如 # 或 ~)会更方便。

正则表达式函数

PHP 提供了多种允许您使用正则表达式的函数。

最常见的函数包括:

函数 描述
preg_match() 如果字符串中存在与模式匹配的项,则返回 1,否则返回 0。
preg_match_all() 返回字符串中与模式匹配的项的次数,次数也可能是 0。
preg_replace() 返回新字符串,其中匹配的模式已被另一个字符串替换。

使用 preg_match()

preg_match() 函数将告诉您字符串中是否包含与模式匹配的项。

实例

使用正则表达式在字符串中执行不区分大小写的搜索以查找 "w3school":

$str = "Visit W3School";
$pattern = "/w3school/i";
echo preg_match($pattern, $str);
运行实例 »

点击 "运行实例" 按钮查看在线实例

使用 preg_match_all()

preg_match_all() 函数将告诉您字符串中与模式匹配的项的数量。

实例

使用正则表达式在字符串中执行不区分大小写的搜索,以计算 "ain" 出现的次数:

$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str);
运行实例 »

点击 "运行实例" 按钮查看在线实例

使用 preg_replace()

preg_replace() 函数将字符串中与模式匹配的所有项替换为另一个字符串。

实例

使用不区分大小写的正则表达式将字符串中的 "Microsoft" 替换为 "W3School":

$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "W3School", $str);
运行实例 »

点击 "运行实例" 按钮查看在线实例

正则表达式修饰符

修饰符可以改变搜索的执行方式。

修饰符 描述 试一试
i 执行不区分大小写的搜索。 试一试
m 执行多行搜索(在字符串的开头或结尾搜索匹配项的模式现在将匹配每行的开头或结尾)。 试一试
u 启用 UTF-8 编码模式的正确匹配。

正则表达式模式

使用方括号来查找一系列字符:

表达式 描述 试一试
[abc] 查找方括号内的一个或多个字符。 试一试
[^abc] 查找不在方括号内的任何字符。 试一试
[a-z] 查找两个字母之间的任何字母字符。 试一试
[A-z] 查找指定大写字母和指定小写字母之间的任何字符。 试一试
[A-Z] 查找两个大写字母之间的任何字符。 试一试
[123] 查找方括号内的一个或多个数字。 试一试
[0-5] 查找两个数字之间的任何数字。 试一试
[0-9] 查找任何数字。 试一试

元字符

元字符是具有特殊含义的字符:

元字符 描述 试一试
| 查找由 | 分隔的任何模式之一,如:cat|dog|fish。 试一试
. 查找任何字符。 试一试
^ 查找作为字符串开头的匹配项,如:^Hello。 试一试
$ 查找作为字符串结尾的匹配项,如:World$。 试一试
\d 查找任何数字。 试一试
\D 查找任何非数字。 试一试
\s 查找任何空白字符。 试一试
\S 查找任何非空白字符。 试一试
\w 查找任何字母(a 到 Z)和数字(0 到 9)。 试一试
\W 查找任何非字母和非数字字符。 试一试
\b 查找位于单词开头或结尾的匹配项,如:\bWORD 或 WORD\b。 试一试
\uxxxx 查找由十六进制数 xxxx 指定的 Unicode 字符。 试一试

量词

量词定义数量:

量词 描述 试一试
n+ 匹配包含至少一个 n 的任何字符串。 试一试
n* 匹配包含零个或多个 n 的任何字符串。
n? 匹配包含零个或一个 n 的任何字符串。
n{3} 匹配包含三个 n 的序列的任何字符串。 试一试
n{2, 5} 匹配包含至少 2 个但不超过 5 个 n 的序列的任何字符串。 试一试
n{3,} 匹配包含至少 3 个 n 的序列的任何字符串。 试一试

注意:如果您的表达式需要搜索特殊字符之一,您可以使用反斜杠(\)来转义它们。例如,要搜索一个或多个问号,您可以使用以下表达式:$pattern = '/\?+/';。

分组

您可以使用括号 ( ) 将量词应用于整个模式。它们还可以用于选择模式的一部分作为匹配项。

实例

使用分组通过查找 ba 后跟两个 na 实例来搜索单词 "banana":

$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str);
运行实例 »

点击 "运行实例" 按钮查看在线实例

完整的 RegExp 参考手册

如需完整参考,请转到我们的完整 PHP 正则表达式参考手册。

该参考包含所有正则表达式函数的描述和实例。

相关视频

更多

免费

php8,我来也
初级php8,我来也

321756次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382414次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

282717次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13413次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时 | 62.5万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时 | 39.7万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时 | 73.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号