04-正则表达式

一、什么是正则表达式

  • 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

  • 正则表达式的大致匹配过程

    • 依次拿出表达式和文本中的字符比较
    • 如果每一个字符都能匹配,则匹配成功
    • 一旦有匹配不成功的字符则匹配失败
    • 如果表达式中有量词或边界,这个过程会稍微有一些不同

二、正则表达式展示

    /[a-zA-z]+://[^\s]*/                //匹配URL
    /^((https|http|ftp)?://)[^\s]+/     //匹配URL和FTP
    /(\w+):\/\/([^\/:]+)(:\d*)?([^# ]*)/     //匹配URL协议、域、端口及相对路径
    /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/    //匹配邮箱地址

三、正则匹配函数

1. preg_match 执行匹配正则表达式

参数描述
pattern必需。要搜索的模式,字符串类型。(正则表达式)
subject必需。被查询的字符串。
matches可选。搜索结果。

示例:

$pattem = '/[0-9]/';
$subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk';
$a = preg_match($pattem,$subject,$matches);
var_dump($a);       // 输出匹配次数
var_dump($matches); // 输出匹配结果

2. preg_match_all 执行一个全局正则表达式匹配

参数描述
pattern必需。要搜索的模式,字符串类型。(正则表达式)
subject必需。被查询的字符串。
matches可选。搜索结果。

示例:

$pattem = '/[0-9]/';
$subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk';
$a = preg_match_all($pattem,$subject,$matches);
var_dump($a);       // 输出匹配次数
var_dump($matches); // 输出匹配结果

3. preg_replace 执行一个正则表达式的搜索和替换

参数描述
pattern必需。要搜索的模式,可以使一个字符串或字符串数组。(正则表达式)
replacement必需。用于替换的字符串或字符串数组。
subject必需。被查询的字符串或字符串数组。
limit可选。进行替换的最大次数。默认是 -1(无限)。

示例 1:

$pattem = '/ouyangke/';
$replacement = '欧阳克';
$subject = '11112222333344445555666677778888999900000
        aaabbbcccdddeeefffggghhhiiijjjjkkkk
        llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx   ouyangke ouyangke ouyangke zhulaoshi zhulaoshi zhulaoshi ximen ximen ximen ';
$a = preg_replace($pattem, $replacement, $subject);
var_dump($a);

示例 2:

$pattem = array('/ouyangke/','/ximen/');
$replacement = array('欧阳克','西门大官人');
$subject = array(
        '11112222333344445555666677778888999900000
        aaabbbcccdddeeefffggghhhiiijjjjkkkk
        llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke ',
        'ouyangke ouyangke ouyangke zhulaoshizhulaoshi ximen ximen ximen '
    );
$a = preg_replace($pattem, $replacement, $subject);
var_dump($a);

4. preg_filter 执行一个正则表达式搜索和替换

参数描述
pattern必需。要搜索的模式,可以使一个字符串或字符串数组。(正则表达式)
replacement必需。用于替换的字符串或字符串数组。
subject必需。被查询的字符串或字符串数组。
limit可选。进行替换的最大次数。默认是 -1(无限)。

示例 1:

$pattem = '/ouyangke/';
$replacement = '欧阳克';
$subject = '11112222333344445555666677778888999900000
        aaabbbcccdddeeefffggghhhiiijjjjkkkk
        llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx   ouyangke ouyangke ouyangke zhulaoshi zhulaoshi zhulaoshi ximen ximen ximen ';
$a = preg_filter($pattem, $replacement, $subject);
var_dump($a);

示例 2:

$pattem = array('/ouyangke/','/ximen/');
$replacement = array('欧阳克','西门大官人');
$subject = array(
        '11112222333344445555666677778888999900000
        aaabbbcccdddeeefffggghhhiiijjjjkkkk
        llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke ',
        'ouyangke ouyangke ouyangke zhulaoshizhulaoshi zhulaoshi ximen ximen ximen '
    );
$a = preg_filter($pattem, $replacement, $subject);
var_dump($a);

5. preg_quote 转义正则表达式字符

参数描述
str必需。要转义的字符串。

示例:

$subject = '^ouyangke$zhulaoshi=miejue!\ximen&[] ';
$a = preg_quote($subject);
var_dump($a);

6. preg_grep 返回匹配模式的数组条目

参数描述
pattern必需。要搜索的模式,可以使一个字符串。(正则表达式)
input必需。输入数组

示例:

$pattem = '/^(\d+)?\.\d+$/';
$array = array(1, 2, 3.4, 53, 7.9);
$a = preg_grep($pattem,$array);
var_dump($a);

7. preg_split 通过一个正则表达式分隔字符串

参数描述
pattern必需。要搜索的模式,可以使一个字符串。(正则表达式)
subject必需。被查询的字符串
limit可选。分隔得到的子串最多只有 limit 个。默认是 -1(无限)

示例:

$pattem = '/[\s,]+/';
$subject = 'ouyangke ouyangke zhulaoshi zhulaoshi ximen ximen';
$a = preg_split($pattem,$subject);
var_dump($a);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

七色的天空

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

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

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

打赏作者

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

抵扣说明:

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

余额充值