PHP 常用正则表达式速查与验证指南

程一诺
程一诺
发布时间:2026-10-14| 3人浏览过
原创

本文系统梳理了 PHP 开发场景下最常用的正则表达式模式,包括各类数字格式校验、特定字符集限制以及常见互联网标识符(Email、URL、IP)的匹配规则。同时详细解释了关键元字符的作用机制,并提供了在 Web 表单及后端代码中的具体应用实例。

基础数据类型与字符匹配

在处理用户输入时,首先需要确保数据的类型正确。以下规则覆盖了整数、浮点数及字母组合的标准格式校验:

  • 非负整数(正整数 + 0):^/d+$
  • 正整数:^[0-9]*[1-9][0-9]*$
  • 非正整数(负整数 + 0):^((-/d+)|(0+))$
  • 负整数:^-[0-9]*[1-9][0-9]*$
  • 整数:^-?/d+$
  • 非负浮点数(正浮点数 + 0):^/d+(/./d+)?$
  • 正浮点数:^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$
  • 非正浮点数(负浮点数 + 0):^((-/d+(/./d+)?)|(0+(/.0+)?))$
  • 负浮点数:^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$
  • 浮点数:^(-?/d+)(/./d+)?$
  • 英文字符串:^[A-Za-z]+$
  • 英数字加下划线串:^/w+$(等价于 [A-Za-z0-9_])

网络标识符与通讯信息校验

针对电子邮件、网址、电话号码及 IP 地址等标准格式,以下是经过验证的正则匹配规则:

  • Email 地址:^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$ 或更严谨的 /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
  • URL 链接:^[a-zA-Z]+://(//w+(-//w+)*)(//.(//w+(-//w+)*))*(//?//S*)?$ 或简化版 http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
  • IP 地址 (IPv4):^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$
  • 国内固定电话:((/(/d{2,3}/))|(/d{3}/-))?(/(0/d{2,3}/)|0/d{2,3}-)?[1-9]/d{6,7}(/-/d{1,4})?$
  • 手机号码 (中国大陆):^((/(/d{2,3}/))|(/d{3}/-))?13/d{9}$ 或提取式 (86)*0*13/d{9}
  • 邮政编码:^[1-9]/d{5}$ 或提取式 [1-9]{1}(/d+){5}
  • 腾讯 QQ 号:^[1-9]*[1-9][0-9]*$

特殊字符与文本清洗

在内容过滤和富文本处理中,常需匹配中文字符、HTML 标签或首尾空格:

  • 匹配中文字符:[/u4e00-/u9fa5]
  • 匹配双字节字符(含汉字):[^/x00-/xff]
  • 匹配首尾空格:(^/s*)|(/s*$)
  • 匹配空行:/n[/s| ]*/r
  • 匹配 HTML 标签:<(.*)>.*</1>|<(.*) //>
  • 混合字符校验(中文、英文、数字、下划线):^[/u4e00-/u9fa5_a-zA-Z0-9]+$
  • SQL 注入关键字拦截:^(select|drop|delete|create|update|insert).*$

元字符核心机制解析

理解正则表达式的底层逻辑有助于灵活编写复杂规则。以下是 PHP PCRE 引擎中常用的元字符行为:

  1. /:转义字符,用于标记特殊字符或原义字符。
  2. ^ 和 $:分别匹配字符串的开始和结束位置。
  3. *、+、?:量词,分别表示零次或多次、一次或多次、零次或一次。
  4. {n}、{n,}、{n,m}:精确指定匹配次数范围。
  5. .:除换行符外的任意单字符。
  6. ()、(?:):捕获组与非捕获组,前者保留匹配结果供后续引用,后者仅用于分组不占用内存。
  7. (?=pattern) 和 (?!pattern):正向和负向预查,用于条件判断但不消耗字符。
  8. [xyz] 和 [^xyz]:字符集合及其否定形式。
  9. /d、/D:数字与非数字,等价于 [0-9] 和 [^0-9]。
  10. /w、/W:单词字符(字母数字下划线)与非单词字符。
  11. /b 和 /B:单词边界匹配与非边界匹配。

实际应用场景示例

在实际开发中,正则通常结合前端交互与后端验证使用,以减轻服务器压力并确保体验流畅。

第1步:前端实时输入限制

通过 JavaScript 监听输入事件,利用正则即时替换非法字符。例如,限制文本框只能输入中文:

// 限制输入中文
onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"

限制只能输入数字和英文:

// 限制输入数字和英文
onkeyup="value=value.replace(/[^a-zA-Z0-9]/g,'')" 
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^a-zA-Z0-9]/g,''))"

第2步:PHP 后端数据清洗

在 PHP 中,建议使用 preg_match() 进行一次性验证,或使用 preg_replace() 进行批量替换。对于上述 IP 地址提取,可参考如下逻辑:

$ip_pattern = '/(\d+)\.(\d+)\.(\d+)\.(\d+)/';
preg_match($ip_pattern, $input_string, $matches);
if ($matches) {
    // $matches[1] 到 $matches[4] 分别包含 IP 的四段数字
}

以上整理了 PHP 开发中涉及数据格式校验的核心正则技巧。以上就是基于 PHP 常用正则表达式的详细内容,更多关于正则表达式验证的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。