史上最全的php正则表达式

yizhihongxing

史上最全的PHP正则表达式

什么是正则表达式?

正则表达式(Regular Expression)是一种文本匹配的工具,可以用来匹配特定的字符、字符串或者文本块。它在编程语言中广泛使用,特别是在处理字符串的情况下。正则表达式提供了一种方式来对文本进行分析、搜索和替换。

PHP中的正则表达式

PHP内置了支持正则表达式的函数库,包括 preg_match、preg_match_all、preg_replace等函数。正则表达式在PHP中使用起来非常方便,可以轻松地查找匹配、替换和分割文本。

在PHP中,正则表达式通常用来匹配字符串中的一些特定结构。例如,可以使用正则表达式来匹配电话号码、日期、时间等特定格式的字符串。

正则表达式的基本语法

在开始使用PHP中的正则表达式之前,需要先了解正则表达式的一些基本语法。下面是一些基本的正则表达式语法:

  • 字符:匹配单个字符。
  • 字符类:匹配一组字符。
  • 量词:指定匹配次数。
  • 定位符:用于定位匹配的开始或结束位置。
  • 分组:用于将多个表达式组合到一起。

下面是一个简单的示例,演示了如何匹配一个单词:

$pattern = '/hello/';
$text = 'hello world';
if (preg_match($pattern, $text)) {
    echo 'Match found!';
} else {
    echo 'Match not found.';
}

在上述示例中,我们使用preg_match函数来查找文本中是否包含了“hello”这个单词。

常用的正则表达式示例

下面是一些常用的正则表达式示例,可以用来匹配常见的文本模式:

匹配手机号

$pattern = '/^1[3-9]\d{9}$/';
$phone = '13812345678';
if (preg_match($pattern, $phone)) {
    echo 'Match found!';
} else {
    echo 'Match not found.';
}

匹配邮箱

$pattern = '/^([\w\-\.]+)@([\w\-\.]+)\.([a-zA-Z]{2,5})$/';
$email = 'test@example.com';
if (preg_match($pattern, $email)) {
    echo 'Match found!';
} else {
    echo 'Match not found.';
}

匹配日期

$pattern = '/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/';
$date = '2021-08-31';
if (preg_match($pattern, $date)) {
    echo 'Match found!';
} else {
    echo 'Match not found.';
}

匹配URL

$pattern = '/^(http|https):\/\/([\w\.\-]+)(\/[\w\.\-\?\=\&]*)?$/';
$url = 'http://www.example.com/index.php?id=123';
if (preg_match($pattern, $url)) {
    echo 'Match found!';
} else {
    echo 'Match not found.';
}

正则表达式的高级用法

除了上述基本的正则表达式语法之外,还有很多高级用法可以提高正则表达式的匹配效果。下面是一些常见的正则表达式高级用法:

捕获组

捕获组允许用户将匹配的文本组合到一起。可以通过“()”来创建捕获组。例如,下面的正则表达式将匹配“hello world!”中的“hello”和“world”:

$pattern = '/(hello) (world)!/';
$text = 'hello world!';
preg_match($pattern, $text, $matches);
print_r($matches);  // Array ([0] => hello world! [1] => hello [2] => world)

零宽度断言

零宽度断言在文本匹配中非常有用,可以用于限制一个模式必须出现在另一个模式的前面或后面。下面是一些常见的零宽度断言:

  • 位置断言

    • ^:匹配输入字符串的开始位置。
    • $:匹配输入字符串的结束位置。
  • 词边界

    • \b:匹配单词边界。
    • \B:匹配非单词边界。
  • 前后顺序断言

    • (?=pattern):匹配pattern前面的位置。
    • (?<=pattern):匹配pattern后面的位置。
    • (?!pattern):匹配不在pattern前面的位置。
    • (?<!pattern):匹配不在pattern后面的位置。
$pattern = '/(?<=hello )world/';
$text = 'hello world';
if (preg_match($pattern, $text)) {
    echo 'Match found!';
} else {
    echo 'Match not found.';
}

非贪婪匹配

默认情况下,正则表达式是贪婪匹配,即尽可能的匹配更多的文本。非贪婪匹配可以通过在一个量词后面加上“?”来实现。例如,下面的正则表达式将匹配“hello”:

$pattern = '/he.*?o/';
$text = 'hello world';
if (preg_match($pattern, $text)) {
    echo 'Match found!';
} else {
    echo 'Match not found.';
}

总结

以上就是PHP中常用的正则表达式示例和一些高级用法。正则表达式在处理字符串时非常有用,可以轻松地处理各种不同的文本模式。不过,正则表达式也非常灵活和复杂,需要仔细理解和掌握其规则和语法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:史上最全的php正则表达式 - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • jquery实现在网页指定区域显示自定义右键菜单效果

    实现在网页指定区域显示自定义右键菜单效果可以使用jquery-contextmenu插件,下面是具体的攻略: 1. 引入jquery-contextmenu插件 首先需要引入该插件的js和css文件,可以在官网 https://swisnl.github.io/jQuery-contextMenu/ 上下载,也可以通过npm安装: <!– 引入CSS…

    other 2023年6月27日
    00
  • ae怎么制作小球页面加载动效?

    对于怎么制作小球页面加载动效,实际上可以使用 ae 动画软件制作,具体步骤如下: 步骤一:新建一个 ae 项目,并导入素材 首先,我们新建一个 ae 项目,选择一个合适的分辨率(如 1920 * 1080),然后需要导入素材,可以使用 ae 自带的素材库,也可以选择自己准备的素材,或者通过网络下载一些素材。 步骤二:制作小球动画 接下来,我们需要制作小球动画…

    other 2023年6月25日
    00
  • Visual Studio+VAssistX自动添加注释,函数头注释,文件头注释

    Visual Studio+VAssistX自动添加注释,函数头注释,文件头注释 在编写代码的过程中,添加注释对于代码可读性和方便后期维护起到了很大的作用。但是手动添加注释会浪费不少时间,特别是在一个工程中有多个文件和函数时。因此,Visual Studio的插件VAssistX就可以很好的解决这个问题,它可以自动添加注释。 VAssistX介绍 VAssi…

    其他 2023年3月28日
    00
  • Visio怎么调出开发者选项?

    想要在Visio中调出开发者选项,需要经过以下步骤: 在Visio中打开“文件”菜单,并在菜单中选择“选项”; 在弹出的“选项”对话框中,找到“常规”选项卡,并向下滚动至底部; 在“常规”选项卡的底部,选中“显示开发人员选项卡”复选框; 点击“确定”按钮即可完成设置。 在Visio中开启开发者选项后,在菜单中将会多出一个选项卡,名为“开发人员”。在这个选项卡…

    other 2023年6月26日
    00
  • ipv6基本概念深入理解

    IPv6基本概念深入理解攻略 1. 了解IPv6的背景和目的 IPv6(Internet Protocol version 6)是下一代互联网协议,旨在解决IPv4地址枯竭和其他一些问题。IPv6采用128位地址,相比IPv4的32位地址,拥有更大的地址空间,可以提供更多的IP地址。 2. 理解IPv6地址的结构 IPv6地址由8组16进制数(每组4个字符)…

    other 2023年7月30日
    00
  • QQ异常关闭恢复程序初始化错误怎么办?

    QQ异常关闭恢复程序初始化错误的解决办法 如果在使用QQ的过程中出现异常关闭恢复程序初始化错误的提示,可能是由于QQ程序文件或系统环境出现问题引起的。解决此问题可以尝试以下几种方法: 方法一:重新安装QQ 这种解决方法可能是最常见的,如果QQ出现了异常关闭恢复程序初始化错误,可以尝试重新安装QQ,并确保安装过程中没有被杀毒软件误判,以免误删除QQ某些必要文件…

    other 2023年6月20日
    00
  • Java中静态代码块、构造代码块、构造函数和普通代码块的区别

    当在Java类中定义一个方法或者属性时,这些元素都会被封装在类体中。除了普通属性和方法,Java中还有一些特殊的代码块,包括静态代码块、构造代码块、构造函数和普通代码块。本文将介绍这些代码块的区别。 静态代码块 静态代码块的作用是在类的加载和初始化阶段执行,只会被执行一次。通常用于进行一些预处理操作,如加载驱动,数据库连接等。静态代码块使用static关键字…

    other 2023年6月26日
    00
  • 全面解析PHP面向对象的三大特征

    PHP中面向对象编程有三大特征:封装、继承和多态。 封装 封装是指将对象的属性和方法封装在类中,并对外部数据提供访问接口,通过这些接口来控制外部数据的使用。在PHP中,可以通过访问修饰符(public、protected、private)来限制属性和方法的访问权限。 示例 class Person { private $name; public functi…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部