PHP正则

作者: killtl | 来源:发表于2018-03-21 11:01 被阅读0次

    组成

    PHP中一个正则表达式分三个部分:分隔符,表达式,修饰符

    原子字符

    . 匹配除换行符以外的任意字符
    \w 匹配一个字母或数字或下划线
    \s 匹配一个空白符
    \d 匹配一个数字
    \b 匹配单词的开始或结束的位置(匹配一个位置)
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    - 表示范围
    [] 匹配括号中的任意一个字符

    量词

    * 重复0次或更多次
    + 重复1次或更多次
    ? 重复0次或1次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次

    反义

    \W \w取反
    \S \s取反
    \D \d取反
    \B \b取反
    [^x] 匹配除了x以为的任意一个字符
    [^abcde] 匹配除了abcde以为的任意一个字符

    分支

    | 表示分支,在[]中无效,匹配分支条件时,从左往右匹配,当匹配到某个分支时结束,不会再考虑后面的分支

    分组

    • 捕获
      (exp) 匹配exp,并捕获文本到自动命名的组里
      (?<name>exp) 匹配exp,并捕获文本到名为name的组里
      (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

    • 零宽断言
      (?=exp) 匹配exp前面的位置
      (?<=exp) 匹配exp后面的位置
      (?!exp) 匹配后面跟的不是exp的位置
      (?<!exp) 匹配前面不是exp的位置

    • 注释
      (?#comment) 提供注释辅助阅读,不对正则产生任何影响

    反向引用

    \1 引用第一个分组子匹配
    \n 引用第n个分组子匹配
    \k<name> 引用命名为name的分组子匹配

    懒惰模式

    *? 任意次
    +? 一次或多次
    ?? 0次或1次
    {m,n}? m-n之间
    {m,}? 至少m

    常用正则

    /^\d+$/ 非负整数
    /^[1-9]+[0-9]*$/ 正整数
    /^-\d+$|0/ 非正整数
    /^-[1-9]+[0-9]*$/ 负整数
    /^[\w-.]+@[\w-.]+(\.[\w-]+)+$/ email地址
    <(.*)>.*<\/\1>|<.* \/> html标签
    <[img|IMG].*?src=[\'|\"](.*?(?:\.gif|\.jpg))[\'|\"].*?[\/]?> 提取img标签的src值

    相关文章

      网友评论

          本文标题:PHP正则

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