美文网首页
PHP-正则表达式整理

PHP-正则表达式整理

作者: AGEGG | 来源:发表于2019-03-16 15:44 被阅读0次

    1.PHP正则表达式函数

    preg_math($patern,$subject,[array & $matches])//匹配一次
    preg_math_all($patern,$subject,array & $matches)//匹配多次
    return 匹配到结果的次数
    
    preg_replace($pattern,$replacement,$subject)//发生替换和未发生替换都保留
    preg_filter($pattern,$replacement,$subject)//保留发生替换的字符串
    
    preg_grep($pattern,$array $input)//preg_grep函数只会去做匹配的操作,不做替换
    阉割版preg_filter
    
    preg_split($patern,$subject)
    //类似explode(),以$patern作为分割点,分割$subject
    
    preg_quote($str)//转义正则运算符$str
    正则运算符
    .\+*?[^]$(){}=!<>|:-
    
    preg_math 表单验证
    preg_replace 非法词语过滤
    

    2.正则表达式基本语法

    界定符,原子,量词,边界控制,模式单元

    2.1界定符

    表示一个正则表达式的开始和结束
    $pattern = '/[0-9]/';
    这几种都可以: /[0-9]/ #[0-9]# {[0-9]} 推荐// ##

    推荐工具regexpal

    2.2原子

    可见原子:Unicode编码表中键盘输出后肉眼可见的字符
    如:标点
    英文字母数字
    汉字其他语言文字
    数理化公式等

    不可见原子
    换行符\n
    回车\r
    制表符\t
    空格

    文字建议转化为Unicode编码来匹配
    匹配正则表达式运算符前加 \ 来转义

    2.3元字符

    原子的筛选方式
    | 匹配两个或者多个分支选择
    [] 匹配方括号中的任意一个原子
    [^] 匹配除方括号中的原子之外的任意字符

    原子的集合
    . 除换行符之外的任意字符
    \d 任意一个十进制数字[0-9]
    \D 任意一个非十进制数字即[^0-9]
    \s 任意一个不可见原子(空格、换行符、换页符、回车符、字表符)即[\f\n\t\v]
    \S 任意一个可见原子即[^\f\n\t\v]
    \w 任意一个数字、字母或下划线即[0-9a-zA-Z_]
    \W 任意个非数字、字母或下划线即[^0-9a-zA-Z_]

    3.量词

    {n} 表示前面的原子恰好出现n次
    {n,} 表示前面的原子最少出现n次
    {n,m} 表示前面的原子最少出现n次,最多出现m次

    •       匹配0次、1次或者多次其之前的原子,即{0,}
      
    •       匹配1次或者多次其之前的原子,即{1,}
      

    ? 匹配0次或者1次其之前的原子,即{0,1}

    [a-z]{2}//小写字母连续出现2次
    \w{4}//数字、字母或下划线连续出现4次
    

    4.边界控制

    ^匹配字符串开始的位置
    $匹配字符串结束的位置
    ()匹配其中的整体为一个原子

    5.模式单元

    (D|d)ung~
    匹配出 Duang~duang~
    

    6.修正模式

    贪婪匹配:匹配结果存在歧义时取其长
    懒惰匹配:匹配结果存在歧义的取其短

    //默认贪婪模式,   //后加U为懒惰模式
    $pattern = '/agegg.+123U/';
    $subject = 'i am agegg__123123123';
    $matches = array();
    preg_math($pattern,$subject,$matches);
    show($matches);
    
    function show($var=null){
        if(empty($var)) {
            echo 'null';
        } elseif(is_array($var)||is_object($var)){
            echo '<pre>';
            print_r($var);
            echo '</pre>';
        } else {
            echo $var;
        }
    }
    
    

    常见修正模式
    U 懒惰匹配
    i 忽略英文字母大小写
    x 忽略空白
    s 让元字符' . '匹配包括换行符在内的所有字符
    e

    EX

    //非空 
    .+
    //保留两位数字浮点数
    \d+|.\d{2}$
    //手机号
    1(3|5|7|8|4)\d{9}
    //email地址
    ^\w+(\.\w+)*@\w+(\.\w+)+$
    //URL地址
    ^(https?://)(\w+\.)+[a-zA-Z]+$
    

    相关文章

      网友评论

          本文标题:PHP-正则表达式整理

          本文链接:https://www.haomeiwen.com/subject/hqdrmqtx.html