PHP 教程

PHP 教程 PHP 简介 PHP 下载安装 PHP 语法 PHP 注释 PHP 变量 PHP Echo / Print PHP 数据类型 PHP 字符串 PHP 数值 PHP Math PHP 常量 PHP 运算符 PHP If...Else...Elseif PHP Switch PHP 循环 PHP 函数 PHP 数组 PHP 全局变量 PHP 正则表达式

PHP 表单

PHP 表单处理 PHP 表单验证 PHP 表单验证必填字段 PHP 表单验证URL/E-mail PHP 表单验证实例

PHP 高级教程

PHP 日期和时间 PHP Include PHP 文件处理 PHP 文件打开/读取 PHP 文件创建/写入 PHP 文件上传 PHP Cookies PHP Sessions PHP Filters PHP Filters Advanced PHP 回调函数 PHP JSON PHP 异常处理

PHP 面向对象

PHP 什么是 OOP PHP 类和对象 PHP 构造函数 PHP 析构函数 PHP 访问修饰符 PHP 继承 PHP 类常量 PHP 抽象类 PHP 接口 PHP 特征 PHP 静态方法 PHP 静态属性 PHP 命名空间 PHP 可迭代对象

MySQL 数据库

MySQL Database MySQL Connect MySQL Create DB MySQL Create Table MySQL Insert Data MySQL Get Last ID MySQL Insert Multiple MySQL Prepared MySQL Select Data MySQL Where MySQL Order By MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Intro AJAX PHP AJAX Database AJAX XML AJAX Live Search AJAX Poll

PHP 实例

PHP 实例 PHP 编译器 PHP 测验 PHP 练习

PHP 参考手册

PHP 概述 PHP Array PHP Calendar PHP Date PHP Directory PHP Error PHP Exception PHP Filesystem PHP Filter PHP FTP PHP JSON PHP Keywords PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP Network PHP Output Control PHP RegEx PHP SimpleXML PHP Stream PHP String PHP Variable Handling PHP XML Parser PHP Zip PHP Timezones


PHP 正则表达式

什么是正则表达式?

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

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

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


语法

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

$exp = "/w3schools/i";

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

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


正则表达式函数

PHP 提供了多种允许您使用正则表达式的函数。 preg_match()preg_match_all()preg_replace() 函数是一些最常用的函数:

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

使用 preg_match()

preg_match() 函数会告诉你一个字符串是否包含一个模式的匹配项。

实例

使用正则表达式对字符串中的"w3schools"进行不区分大小写的搜索:

<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo preg_match($pattern, $str); // Outputs 1
?>
亲自试一试 »

使用 preg_match_all()

preg_match_all() 函数将告诉您在字符串中找到了多少匹配模式。

实例

使用正则表达式对字符串中"ain"的出现次数进行不区分大小写的计数:

<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?>
亲自试一试 »

使用 preg_replace()

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

实例

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

<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "W3Schools", $str); // Outputs "Visit W3Schools!"
?>
亲自试一试 »


正则表达式修饰符

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

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

正则表达式模式

括号用于查找字符范围:

表达式 描述
[abc] 从括号内的选项中找出一个字符
[^abc] 查找不在括号内的任何字符
[0-9] 从 0 到 9 中查找一个字符

元字符

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

元字符 描述
| 为任何一个由 | 分隔的模式查找匹配项 如:猫|狗|鱼
. 只查找任意字符的一个实例
^ 找到一个匹配作为字符串的开头,如:^Hello
$ 在字符串末尾找到匹配项,如:World$
\d 找一个数字
\s 查找空白字符
\b 在这样的单词开头查找匹配:\bWORD,或在这样的单词结尾:WORD\b
\uxxxx 查找十六进制数xxxx指定的Unicode字符

量词

量词定义数量:

的字符串 的字符串 的字符串 序列的字符串
量词 描述
n+ 匹配任何包含至少一个 n
n* 匹配任何包含零次或多次 n
n? 匹配任何包含 0 个或 1 个 n
n{x} 匹配任何包含 X n's
n{x,y} 匹配任何包含 X 到 Y n 的序列的字符串
n{x,} 匹配任何包含至少 X 个 n 的序列的字符串

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


分组

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

实例

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

<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str); // Outputs 1
?>
亲自试一试 »

完整的正则表达式参考

如需完整参考,请访问我们的完整的 PHP 正则表达式参考

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