zoukankan      html  css  js  c++  java
  • php 正则表达式

    • 基础
    1. 开始符和结束符:/;
    2. 特殊字符 包括(/、);
    3. 或用(|)或者[ ]表示。区别:(I)可匹配多个字符,如(ansnj|cmxc)。[]可匹配单个字符,如[a-z0-9],表示匹配a到z中或者0到9中的任意一个字符。
    4. 非用^表示,一般和[]连用,如[^a-b]表示匹配除了a到z之外的任意一个字符,[abc^]则表示匹配a|b|c|^;
    5. 表示重复次数{n,m} , * , ? , + 。如[a-b]{1,2}表示匹配到aa|ab|ba|bb四种可能,*表示重复次数为0次或者多次,?表示0或一次,+表示一次货多次;
    6. .表示除换行符外的任意字符
    7. f  匹配一个换页符。等价于 x0c 和 cL。
       匹配一个换行符。等价于 x0a 和 cJ。
       匹配一个回车符。等价于 x0d 和 cM。
      s  匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ f v]。
      S  匹配任何非空白字符。等价于 [^ f v]。
       匹配一个制表符。等价于 x09 和 cI。
      v  匹配一个垂直制表符。等价于 x0b 和 cK。
    • 注意
    1. /和在正则表达式中都需要用转义。
    2. 如果要匹配以上描述的任意字符都需要用转义,如要匹配一个+号,就需要写为+;
    3. 需要与以上描述的任意字符连用都需要转义,如/\[h-i]/则匹配的字符串为h或者i;
    4. [^] 这样的连用是错误,若想匹配^,则用^表示,但[a^]则可以表示a或者^中的其中一个字符。
    5. 贪婪匹配:/.*+/ 使正则表达式尽可能的匹配多的字符
      惰性匹配:/.*?/ 使正则表达式尽可能少的匹配字符
      元字符包含 [] () ^ $ ~ . ? + * - | {} 需要匹配本体时需要转义(加)
      常用的转义字母 : d (0-9) D (任意非十进制字符) w (任意字母和数字和下划线) W(任意非字母和非数字和非下划线) (换行符) (回车) (水平制表符) f (换页)

    • 例子分析
    /*  
     * 邮件匹配 分三部分 @前为一个整体 @后到.为一个整体 .之后为一个整体
     * part1 : 至少有一个字母或数字或下划线(即 w) 由 -或者.或者+ 拼接的 一或多部分 可得正则为 w+([.-+]w+)*
     * 如 :123-11+33_.aa
     * part2 : 与part1相似,但没有+号的连接符 w+([.-]w+)*
     * 如:123-11.cn
     * part3 :与part2一致 w+([.-]w+)*
     * 如: com.cn
     * */
    /* $pattern = '/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/';
    $subject = '925224611@qq.com';
    $subject = '192-168-1-0-1@qq.com';
    $subject = '192*168+1.0-1@qq.com';
    $res = preg_match($pattern, $subject , $arr_data);
    
    var_dump($res);
    echo '<pre>'; print_r($arr_data);  */
    
    $pattern = '/^[w-]$/';
    $subject = '925224611@qq.com';
    $subject = '192-168-1-0-1@qq.com';
    $subject = '192*168+1.0-1@qq.com';
    $subject = '-';
    $res = preg_match($pattern, $subject , $arr_data);
    
    var_dump($res);
    echo '<pre>'; print_r($arr_data);
    
    /* 
     * 网站地址由三部分组成:
     * part1 : 是一个固定的部分 http(s)?://
     * part2 : 是域名部分(至少两级域名)  ([w-]+.)+[w-]+
     * part3 : 其他路径和参数部分 (/[w-/?=&%]*)?
     *  */
    
    $pattern = '/^http(s)?://([w-]+.)+[w-]+(/[w-./?%&=]*)?$/';
    $subject = 'http://192.168.0.1/erp/index.php/Home/WlZj/tableList.html?&draw=1&columns%5B0%5D%5Bdata%5D=&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=false&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=hh&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=quarter&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=aunit&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B4%5D%5Bdata%5D=confnum&columns%5B4%5D%5Bname%5D=&columns%5B4%5D%5Bsearchable%5D=true&columns%5B4%5D%5Borderable%5D=false&columns%5B4%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B4%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B5%5D%5Bdata%5D=status&columns%5B5%5D%5Bname%5D=&columns%5B5%5D%5Bsearchable%5D=true&columns%5B5%5D%5Borderable%5D=false&columns%5B5%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B5%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B6%5D%5Bdata%5D=&columns%5B6%5D%5Bname%5D=&columns%5B6%5D%5Bsearchable%5D=true&columns%5B6%5D%5Borderable%5D=false&columns%5B6%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B6%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B7%5D%5Bdata%5D=remark&columns%5B7%5D%5Bname%5D=&columns%5B7%5D%5Bsearchable%5D=true&columns%5B7%5D%5Borderable%5D=false&columns%5B7%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B7%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B8%5D%5Bdata%5D=&columns%5B8%5D%5Bname%5D=&columns%5B8%5D%5Bsearchable%5D=true&columns%5B8%5D%5Borderable%5D=false&columns%5B8%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B8%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=1&order%5B0%5D%5Bdir%5D=desc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1560409514623';
    
    //$subject = 'https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6';
    
    //$path = '/^http(s)?://([w-].)+([w-])+(/[w./?-=&%]*)?$/';
    $res = preg_match($pattern, $subject , $arr_data);
    
    var_dump($res);
    echo '<pre>'; print_r($arr_data); 
  • 相关阅读:
    微信小程序-rpx
    vue项目页面切换到默认显示顶部
    访问formData的数据
    vue图片懒加载
    react+umi+dva
    switch判断中,case后面跟逻辑表达式出错
    给2020做一个小结
    react+next.js遇到的问题及解决
    域名相关(结构与规范)
    react+antd一边踩坑一边积累
  • 原文地址:https://www.cnblogs.com/Acsii/p/8205747.html
Copyright © 2011-2022 走看看