正则表达式
什么是正则表达式?
在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具,换句话说,正则表达式就是记录文本规则的代码。
常用工具
Regester、RegexBuddy、Javascript正则表达式在线测试工具
常用元字符
    .	    匹配除换行符以外的任意字符
    \w	    匹配字母或数字或下划线或汉字
    \s	    匹配任意的空白字符
    \d	    匹配数字
    \b	    匹配单词的开始或结束
    ^	    匹配字符串的开始
    $	    匹配字符串的结束
字符转义
如果想要查找元字符的话,必须使用 \ 来进行转义,如查找 \ ,得用 \
重复
限定符:指定数量的符号
    *       重复 0 次 或 更多次
    +       重复 1 次 或 更多次
    ?       重复 0 次 或 1 次
    {n}     重复 n 次
    {n,}    重复 n 次 或 更多次
    {n,m}   重复 n 到 m 次
[]
[aeiou] 匹配一个元音字母
[.?!] 匹配标点符号
\(?0\d{2}[)-]?\d{8} 匹配部分电话号码
注意:( 和 ) 也是元字符,如 断言
分支条件 |
分支条件:有几种规则,只要满足任意一种规则则匹配,使用 | 把不同的规则分开,如
0\d{2}-d{8} | 0\d{3}-\d{7} | \(0\d{2}\)[-]?\d{8} | 0\d{2}[-]?\d{8}
分组或子表达式
子表达式用 () 表示,如
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)   匹配IP地址
反义
反义使用场景:查找不属于某类字符类的字符
    \W	        匹配任意 非字母、数字、下划线、汉字的字符
    \S	        匹配任意 非空白符的字符
    \D	        匹配任意 非数据的字符
    \B	        匹配 非单词开头或结束的位置
    [^x]        匹配任意 除x以外的字符
    [^aeiou]    匹配任意 非元音字母的字符
模式修正符
    i	    忽略大小写
    g	    全局匹配
    m	    多行识别
    s	    单行识别,回车换行视为普通字符
    x	    忽略模式中的空白
    A	    强制从目标字符串开头匹配
    D	    强制尾部无内容,若使用$,则不允许结尾有换行
    U	    禁止贪婪匹配,只匹配最近的一个字符串
    e	    配合PHP preg_replace()使用,将匹配来的字符串当正则表达式执行
其他
略,如断言等