正则表达式
    正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。
    正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。主要用于:字符匹配的
    正则表达式在注册用户名,邮箱格式验证, waf(web防火墙规则) 等等……很多地方都会用到
    正则表达式语法讲解
    电话:13\d{9}
    QQ号码: [1-9]\d{5,12}

    查找,匹配, 代码审计, 采集
    preg_match
    preg_match_all

    1 定义字符集
    [a-z]
    [abc] a b c
    [a-zA-Z]
    [0-9]
    [3-9]
    [a-zA-Z0-9_]
    [123]+

    特殊字符集
    $: 匹配输入字符串的结尾位置
    ^: 表示字符串的开始
    . :匹配除换行符\n之外的任何单字符
    *:其前面那个单元出现0次或者以上(任意次数)
    + :其前面的那个单元出现1次或以上
    ? : 其前面的那个单元出现0次或1次
    \: 这个字符用来转义
    |:指明两项之间的一个选择
    (): 标记一个子表达式的开始和结束位置
    php命令
    preg_match
    preg_match_all
    file_get_contents
    php get

    3 组合字符
    \d 0-9 [0-9] [3-9]
    \D 非数字[^0-9] [^abc]不是括号内的任意字符
    \w 与任何单词字符匹配,包括下划线。等价于”[A-Za-z0-9]”。
    \W 与任何非单词字符匹配。等价于”[^A-Za-z0-9
    ]”。
    \s 空格字符
    \S 非空格字符
    \b 单词边界
    与单词的边界匹配,即单词与空格之间的位置。例如,”er\b”与”never”中的”er”匹配,但是不匹配”verb”中的”er”。
    \B 非单词边界
    与非单词边界匹配。”ea*r\B”与”neverearly”中的”ear”匹配。

    4 限定字符
    {m} 其前一个单元 严格出现 m次
    {m,} 其前一个单元 至少出现m次, 至多不限制
    {m,n} 其前一个单元, 至少m次, 至多n次
    [^abc] 不是括号内的任意字符
    正则工具:
    http://tools.jb51.net/regex/create_reg

    email
    xxxxxx_xxx_xxx@asa-d.com.cn

    \w[-\w.+]*@(A-Za-z0-9+.)+[A-Za-z]{2,14}
    手机
    1344542121
    013412

    0?
    (13|14|15|18)
    [0-9]{9}

    身份证
    \d{17}[\d|x]|\d{15}
    18
    \d{17}[\d|x]
    15

    子表达式
    (.*?)
    采集中用的最多的是 子表达式的用法
    正则表达式 - 图1
    正则表达式 - 图2