PHP preg_match():正则表达式 (Regex)
⚡ 智能摘要
PHP 中的正则表达式是一种模式匹配工具,它使用单个表达式即可验证、分割和替换文本。本教程将介绍核心函数 preg_match、preg_split 和 preg_replace,解释常用的元字符,并逐步构建一个可用的电子邮件验证模式。

PHP中的正则表达式是什么?
PHP正则表达式正则表达式(也称为正则表达式)是一种强大的模式匹配工具,可以用单个表达式完成多种匹配操作。正则表达式使用特殊字符(例如 +、- 和 ^)来创建复杂的表达式。它们可以帮助您完成验证电子邮件地址、IP 地址等任务。
为什么要使用正则表达式
- PHP 正则表达式通过调用单个函数简化了字符串数据中模式的识别,从而节省了编码时间。
- 在验证用户输入的内容时,例如电子邮件地址、域名、电话号码和 IP 地址
- 在搜索结果中突出显示关键字
- 创建自定义 HTML 模板时,可以使用 PHP 中的正则表达式来识别模板标签并将其替换为实际数据。
PHP 中的内置正则表达式函数
PHP 内置了一些函数,允许我们使用正则表达式,我们将在本教程中学习这些函数。让我们来看看 PHP 中常用的正则表达式函数。
- PHP 中的 preg_match() 函数用于对字符串进行模式匹配。如果找到匹配项,则返回 true;如果没有找到匹配项,则返回 false。
- PHP 中的 preg_split() 函数用于对字符串执行模式匹配,然后将结果拆分为数字数组。
- PHP 中的 preg_replace() – 此函数用于对字符串执行模式匹配,然后用指定的文本替换匹配项。
下面给出的是正则表达式函数(例如 preg_match()、preg_split() 或 preg_replace())的语法。
<?php
function_name('/pattern/',subject);
?>
这里,
- “function_name(…)”可以是 preg_match()、preg_split() 或 preg_replace()。
- “/…/”中的斜杠表示正则表达式的开始和结束。
- “'/pattern/'”是我们需要匹配的模式
- “subject” 是要匹配的文本字符串
现在让我们来看一些实现上述 PHP 正则表达式函数的实际例子。
PHP 中的 Preg_match()
第一个例子使用 preg_match() 函数对给定文本中的单词“guru”进行简单的模式匹配。 URL.
下面的代码展示了上述示例中 preg_match() 函数的实现。
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
浏览到 URL http://localhost/phptuts/preg_match_simple.php
让我们来检查一下负责输出结果的代码部分, preg_match('/guru/', $my_url)。 这里,
- “preg_match(…)” 是 PHP 正则表达式函数
- “'/guru/'” 是需要匹配的正则表达式模式
- “$my_url” 是包含要匹配的文本的变量。
PHP Preg_split()
现在让我们来看另一个使用 preg_split() 函数的例子。
我们将取一个字符串短语并将其分解成一个数组;要匹配的模式是一个空格。
本例中使用的文本字符串是“我爱正则表达式”。
下面的代码说明了上述示例的实现。
<?php $my_text = "I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
浏览到 URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
现在让我们来看一下 preg_replace() 函数。 PHP功能 执行模式匹配,然后用其他内容替换该模式。
下面的代码搜索单词 guru 绳子.
它将“guru”一词替换为“guru”一词,并在其周围添加 CSS 代码以突出显示背景颜色。
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
假设您已保存文件 preg_replace.php,请浏览至 URL http://localhost/phptuts/preg_replace.php
正则表达式元字符
以上示例使用了非常基本的模式。元字符允许我们执行更复杂的模式匹配,例如测试电子邮件地址的有效性。现在让我们来看看常用的元字符。
| 元字符 | 描述 | 例如: |
|---|---|---|
| . | 匹配除换行符之外的任意单个字符 | /./ 匹配任何只有一个字符的内容 |
| ^ | 匹配字符串的开头或排除特定字符 | /^PH/ 匹配以 PH 开头的任何字符串 |
| $ | 匹配字符串末尾的模式 | /com$/ 匹配 guru99.com、yahoo.com 等。 |
| * | 匹配零个或多个前面的字符 | /com*/ 匹配计算机、通信等。 |
| + | 要求前面的字符至少出现一次 | /yah+oo/ 匹配 yahoo |
| \ | 用于转义元字符 | /yahoo+\.com/ 将点视为文字值 |
| [...] | 字符类 | /[abc]/ 匹配 a、b 或 c |
| AZ | 匹配小写字母 | /az/ 匹配 cool、happy 等等。 |
| A-Z | 匹配大写字母 | /AZ/ 匹配 WHAT、HOW、WHY 等。 |
| 0-9 | 匹配 0 到 9 之间的任意数字 | /0-4/ 匹配 0,1,2,3,4 |
上面的列表仅给出了正则表达式中最常用的元字符。
现在让我们来看一个比较复杂的例子,该例子用于检查电子邮件地址的有效性。
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
解释电子邮件验证模式
这里,
- “/…/” 是正则表达式的开始和结束词。
- “^[a-zA-Z0-9._-]”匹配任何大小写字母、0到9之间的数字以及点、下划线或破折号。
- “+@[a-zA-Z0-9-]”匹配 @ 符号,后跟小写或大写字母、0 到 9 之间的数字或破折号。
- “+\.[a-zA-Z.]{2,5}$/” 使用反斜杠转义点,然后匹配字符串末尾长度为 2 到 5 的任何小写或大写字母。
浏览到 URL http://localhost/phptuts/preg_match.php
从上面的分析可以看出,元字符在匹配模式方面非常强大。




