4,PHP正则基础

前言

正则表达式的应用非常广泛,最常见的定义,就是一组用来描述字符串规则的特殊组合。
这个组合,描述了某种字符串拼接规则,通过语言提供的函数,去执行处理,去匹配任何符合规则的字符串。

PHP作为“世界上最好用的语言”,当然也提供了对正则的支持。

本文要点

  1. 正则语法
  • PHP对正则的支持
  • PHP的正则函数
  • 修正模式
  • 常见正则表达式

正则语法

这一知识点,比较枯燥,但掌握之后,就会对正则有一定了解
我用思维导图理了一下

《4,PHP正则基础》 正则语法.png

PHP对正则的支持

PHP对正则的支持,由扩展 PCRE 来提供,PCRE兼容perl的语法。
一般情况下,PCRE在安装PHP时就默认安装好了,但也存在某些没有安装的情况,相关的安装,可以参考PHP的官方手册。直通车
PCRE还提供了一些预定义常量,这些平时不太用到,具体使用时可以参考手册

PHP的正则函数

《4,PHP正则基础》 functions.png

PHP官方手册上,提供了这些函数,这里,对比较常用的函数进行实例说明

<?php 
    /**
     * 正则查找
     * 
     * $pattern 正则表达式
     * $subject 被查询的文本
     * $matches 可省略 ,引用类型,函数内部改变,则外部也会改变  匹配的结果放到这个数组中
     *
     * return Int , 返回匹配的次数
     */
    // preg_match($pattern, $subject,&$matches); // 最多只会返回 1 
    // preg_match_all($pattern, $subject, &$matches)
    // 
    
    $pattern = '/[0-9]/';
    $subject = 'asd54545sdfg4ras54df45rea1';
    $matches = array();

    echo preg_match($pattern, $subject,$matches); // 注意,这里第三个参数,在定义函数的时候,就定好&后,传值时不需要再写&
    echo "<br/><hr/>";
    print_r($matches);
    echo "<br/><hr/>";
    echo preg_match_all($pattern, $subject,$matches);
    echo "<br/><hr/>";
    print_r($matches);
    echo "<br/><hr/>";

    /**
     * 正则替换
     * $pattern 正则表达式
     * $replacement 用于替换的文本
     * $subject 被查询的文本
     * 和str_replace一样,$pattern和$replacement也支持数组
     * $subject 也支持数组,会一一针对这个数组的成员进行替换
     *
     * replace和filter的区别在于,在返回的数组中,前者会保留没有被替换的元素,而后者则只保留被替换过的元素(当subject也是数组时)
     */
    
    $replacement = 'hellow,perl!';
    echo preg_replace($pattern,$replacement,$subject);
    echo "<br/><hr/>";
    echo preg_filter($pattern, $replacement, $subject);
    echo "<br/><hr/>";

    /**
     * 正则匹配
     */
    $input = array('asd411','a5a5a54','jashdjh44','aaaaa');
    $arr =  preg_grep($pattern, $input); // 没有替换,只有匹配,将数组中匹配的值保留下来,当作返回值返回
    // 此函数,可用于将数组中不符合条件的元素过滤掉
    print_r($arr);
    echo "<br/><hr/>";

    /**
     * 正则分割
     */
    $arr = preg_split($pattern, $subject); // 用符合pattern规则的字符串为标志位,分割subject字符串,并返回数组
    // explode(delimiter, string) 与这个函数类似
    print_r($arr);
    echo "<br/><hr/>";

    /**
     * 正则表达式运算符转义
     * . \ * ? [ ^ ] $ ( ) { } = ! < > | : -  正则表达式的运算符
     * 转以后,则认为是文本
     */
    
    $str = preg_quote($pattern);
    print_r($str);
    echo "<br/><hr/>";

    /**
     * 总结
     * 1,preg开头
     * 2,主要使用场景
     *  preg_match系列    验证等场景
     *  preg_replace系列      非法词语过滤等场景
     */
    
 ?>

修正模式

修正模式实际上就是对当前正则表达式的一种设定,如告诉处理器,你以xxx规则来解析这个表达式
通常,结束符后的那一位指定,被称之为 修修正符

《4,PHP正则基础》 修正模式.png

常见正则表达式

日常应用中,最常见的表单验证就频繁使用了正则表达式
下面列举几个常用的:

 /.+/ -- 非空
/^[^0]\d+\.\d{2}$/ -- 两位小数的浮点数
/^1[34578]\d11$/ -- 大陆手机号验证
/^\w+(\.(\w|.)+)*@\w+(\.\w+)+$/ --Email地址
/^((http://)|(https://))?(\w+\.)+[a-zA-Z]+/?.+$/  -- URL地址

结语

以上内容,是个人学习时候总结的。主要以理论为主,想要掌握更深,还需动手实践。

本文出自半醒的狐狸博客

    原文作者:o半醒的狐狸
    原文地址: https://www.jianshu.com/p/85cbfe4ebdb0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞