阅读 207

正则表达式

  1. 正则表达式的作用: 分割 查找 匹配 替换

  2. 分隔符: 正斜线(/) hash符号(#) 取反符号(~)

  3. 通用原子: \d \D \w \W \s \S

    \d: 匹配一个0~9的数字
    \D: 非0~9的数字
    \w: 用于匹配字符 数字 下划线
    \W: 非字符 数字 下划线
    \s: 匹配任何空白字符,包括空格、制表符、换页符等等
    \S: 匹配任何非空白字符。
    复制代码
  4. 元字符: . * ? ^ $ + {n} {n,} {n,m} [] () [^] | [-]

    .: 匹配除换行符\n之外的任何单个字符
    *: 匹配前面的子表达式零次或多次
    ?: 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符
    ^: 匹配输入字符串的开始位置
    $: 匹配输入字符串的结束位置
    +: 匹配前面的子表达式一次或多次
    {n}: 匹配确定的 n 次
    {n,}: 匹配至少 n 次
    {n,m}: 匹配 n~m 次
    []: 集合
    (): 整体或后向引用
    复制代码
  5. 模式修正符:i m e s U x A D u

    i: 不区分大小写
    U: 取消贪婪模式
    复制代码
  6. 正则表达式:后向引用

    $str = '<b>abc</b>';
    $pattern = '/<b>(.*)<\/b>/U';
    $str2 = preg_replace($pattern, '\\1', $str);
    复制代码
  7. 正则表达式:贪婪模式

    $str = '<b>abc<\b><b>bcd<\b>';
    $pattern = '/<b>(.*)<\/b>/U';
    preg_match_all($pattern, $str, $str2);
    复制代码
  8. 正则表达式PCRE函数:

    preg_match()
    preg_match_all()
    preg_replace()
    preg_split()
    复制代码
  9. 正则表达式中文匹配:

    中文匹配:UTF-8汉字编码范围是0x4e00-0x9fa5
              ANSI(GB2312)环境下, 0xb0-0xf7, 0xa1-0xfe
    UTF-8要使用u模式修正符是模式字符串被当成UTF-8
    ANSI(gb2312)环境下,要使用chr将Ascii码转换为字符
    
    $str = '中文';
    $pattern = '/[\x{4e00}-\x{9fa5}]+/u'; 
    preg_match($pattern, $str, $match);
    复制代码
  10. 正则表达式实例

    1.以139开头的手机号
    $str = '13988888888';
    $pattern = '/^139\d{8}$/';
    preg_match($pattern, $str, $match);
    print_r($match);
    
    2.取标签img中src的值
    $str = '<img class="navup" src="/images/up.gif" alt="PH">PHP 正则表达式(PCRE)</a></p><img class="navup" src="/images/up.gif" alt="PHP">PHP正则表达式(PCRE)</a></p>';
    $pattern = '/<img.*src="(.*)".*\/?>/Ui';
    preg_match_all($pattern, $str, $match);
    print_r($match);
    
    3.把学号中间7位替换成*
    $str = '1541234567444';
    $pattern = '/^(\d)(.*)(\d{3})$/U';
    $replacement = '$1***$3';
    preg_replace($pattern, $replacement, $str)
    复制代码
文章分类
后端
文章标签