preg_match用于执行单次正则匹配,返回1(成功)或0(失败),模式必须用分隔符(如/)包裹,需注意转义、修饰符(如i、u、s、m)及引号对反斜杠的处理,匹配结果通过$matches数组获取。

PHP 的 preg_match 用于执行一次正则匹配,返回是否找到(1 或 0),不是找全部。写基础规则的关键是:**模式必须用分隔符包裹,常用 /,且需注意转义、修饰符和字符串引号的影响。**
基本语法格式要写对
正确写法:
preg_match('/pattern/', $subject, $matches)- 开头和结尾的
/是分隔符,不能省略 - 如果 pattern 里本身含
/,得转义://path//,或换其他分隔符如#/path/# - 单引号字符串中,反斜杠不会被 PHP 解析,所以
'/d+/'安全;双引号里要小心:"/\d+"(因为d在双引号中会被误读)
常用基础模式示例
快速上手几个高频场景:
- 匹配纯数字:
'/^d+$/'(^开头、$结尾,确保整串都是数字) - 匹配邮箱局部(简单版):
'/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/' - 提取 HTML 标签内容:
'/<title>(.*?)/i'</title>(i修饰符忽略大小写,.*?非贪婪匹配) - 匹配中文字符:
/[x{4e00}-x{9fff}]+/u(u修饰符启用 UTF-8 模式)
必须加的修饰符别漏掉
修饰符写在末尾分隔符之后,影响匹配行为:
-
i:忽略大小写,比如/abc/i能匹配AbC -
u:支持 Unicode(处理中文、emoji 等必需) -
s:让.匹配换行符(默认不匹配) -
m:让^和$匹配每行起止,不只是整个字符串首尾
匹配结果怎么取出来
preg_match 第三个参数是引用数组,匹配成功后会自动填充:
-
$matches[0]:完整匹配到的字符串 -
$matches[1]、$matches[2]…:依次对应括号()捕获的子组 - 没匹配时
$matches不会被修改,建议先初始化为空数组或用isset()判断
不复杂但容易忽略细节,写对分隔符、转义和修饰符,就能稳住大部分基础需求。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











