PHP 正则表达式完全指南

PHP 正则表达式完全指南

PHP提供了两种风格的正则表达式支持:PCRE(Perl Compatible Regular Expressions)和POSIX。由于POSIX已经废弃,本指南将专注于PCRE风格的正则表达式使用。

1. 基础知识

1.1 正则表达式函数

PHP中最常用的正则表达式函数:

// 查找匹配
preg_match()        // 返回第一个匹配
preg_match_all()    // 返回所有匹配

// 替换
preg_replace()      // 替换匹配的内容
preg_replace_callback() // 使用回调函数替换

// 分割
preg_split()        // 使用正则表达式分割字符串

// 过滤
preg_grep()         // 返回匹配模式的数组元素

1.2 基本语法示例

<?php

// 1. 基本匹配
$text = "Hello, my phone is 123-456-7890";

// 查找第一个匹配
if (preg_match('/\d+/', $text, $matches)) {
   
   
    echo "Found: " . $matches[0]; // 输出: 123
}

// 查找所有匹配
if (preg_match_all('/\d+/', $text, $matches)) {
   
   
    print_r($matches[0]); // 输出: Array([0]=>123 [1]=>456 [2]=>7890)
}

// 2. 使用不同分隔符
// 使用 / 分隔符
$pattern1 = '/pattern/';
// 使用 # 分隔符
$pattern2 = '#pattern#';
// 使用 ~ 分隔符
$pattern3 = '~pattern~';

2. 模式修饰符

PHP支持多种模式修饰符,用于改变匹配行为:

<?php

$text = "Hello WORLD\nNew Line";

// i - 不区分大小写
preg_match('/hello/i', $text);     // 匹配成功

// m - 多行模式
preg_match('/^New/m', $text);      // 匹配成功

// s - 点号匹配所有字符(包括换行)
preg_match('/Hello.*Line/s', $text); // 匹配成功

// x - 忽略空白字符和注释
$pattern = '/
    \d+  # 匹配数字
    \s*  # 可选的空白字符
    \w+  # 匹配单词
/x';

// u - Unicode模式
preg_match('/\p{Han}/u', '你好');  // 匹配中文字符

3. 常用匹配模式

3.1 字符匹配

<?php

$text = "PHP 7.4 is awesome! Price: $99.99";

// 匹配数字
preg_match_all('/\d+/', $text
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老大白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值