PHP 正则表达式 总结

  • 正则表达式的作用
    分割、查找、匹配、替换字符串

  • 分割符
    • 正斜线(/)
    • hash符号(#)
    • 取反符号(~)

  • 通用原子
    • \d 10进制 0到9
    • \D 取反 除了 十进制的 0到9
    • \w 数字字母下划线
    • \W 除了数字字母下划线
    • \s 空白符
    • \S 除了空白符

  • 元字符
    • . 匹配除换行符(\n、\r)之外的任何单个字符
    • * 匹配前面的子表达式零次或多次
    • + 匹配前面的子表达式一次或多次
    • ? 匹配前面的子表达式零次或一次
    • {n} n 是一个非负整数,匹配确定的 n 次
    • {n,} n 是一个非负整数,至少匹配n 次
    • {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次
    • ^ 匹配输入字符串的开始位置
    • $ 匹配输入字符串的结束位置
    • [] 代表匹配一个集合里的一个元素,如[abc]代表匹配a或b或c
    • () 匹配 ()内的内容,并获取

  • 模式修正符
    • i 不区分大小写
    • m 将字符串视为多行,不管是那行都能匹配
    • s 将字符串视为单行,换行符作为普通字符
    • e e 配合函数preg_replace()使用 (php7 以取消)
    • U U 只匹配最近的一个字符串,不重复匹配
    • x x 将模式中的空白忽略
    • A 强制从目标字符串开头匹配
    • D 如果使用$限制结尾字符,则不允许结尾有换行
    • u 模式字符串被当成 UTF-8 (匹配中文可以用到)

未完待续..............................

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

分享一个我自己常用的 (?<name>)用法,也有其他写法 (?'name')(?P<name>)参考手册

例如要匹配 URL: domain.com/p1 的 page 页数 \/p(?<page_num>\d+)/

匹配到的数字将会存储在正则匹配到的变量数组当中,
如:preg_match('/\/product_p(?<page>\d+)/',$_SERVER['REQUEST_URI'],$grep_temp)

取值则为:$grep_temp['page']

6年前 评论
巴啦啦

望多用

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!