正则学习 测试网站http://regexpal.com/

    \b 匹配词的开始或结束 匹配的是一个位置 \bhi\b history就不行了,只匹配hi
    . 匹配出了换行符以为的所有字符
    * 它指定* 前边的内容可以连续重复使用任意次以使整个表达式得到匹配
    .* *前面的任意字符匹配。也就是*之前可以,任意数量的不包含换行的字符
    \bhi\b.*\bLucy\b 先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词。
    \d 匹配一位数字
    0\d\d-\d\d\d\d\d\d\d\d 匹配中国的电话号码
    0\d{2}-\d{8} {2} {8}的意思是前面\d 必须连续重复匹配2次(8次)
    \s 匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
    \w 匹配字母或数字或下划线或汉字等。
    * 匹配重复任意次(可能是0次)
    + 则匹配重复1次或更多次。
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    {2} 匹配只能不多不少重复2次
    {5,12} 重复的次数不能少于5次,不能多于12次
    ^\d{5,12}$ 填写的QQ号必须为5位到12位数字

    \ 转移字符。 \. 和\* 。当然,要查找\ 本身,你也得用\\ .
    例如: deerchao\.net 匹配deerchao.net , C:\\Windows 匹配C:\Windows 。


    重复
    * 重复零次或更多次
    + 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次

    ^\w+ 匹配一行的第一个单词


    [] 匹配[]中的某一个字符 [aeiou] 就匹配任何一个英文元音字母 [.?!] 匹配标点符号(.或?或!)

    \(?0\d{2}[) -]?\d{8}
    这个表达式可以匹配几种格式的电话号码,
    像(010)88886666 ,或022-22334455 ,
    或02912345678 等。我们对它进行一些分析吧:首先是
    一个转义字符\( ,它能出现0次或1次( ? ),然后是一个0 ,后面跟着2个数字( \d{2} ),然后是) 或- 或空
    格中的一个,它出现1次或不出现( ? ),最后是8个数字( \d{8} )。

    | 分支条件,两个条件都可以。0\d{2}-\d{8}|0\d{3}-\d{7} 这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445) 。

    () 分组 (\d{1,3}\.){3}\d{1,3} 是一个简单的IP地址匹配表达式

    反义
    \W 匹配任意不是字母,数字,下划线,汉字的字符
    \S 匹配任意不是空白符的字符
    \D 匹配任意非数字的字符
    \B 匹配不是单词开头或结束的位置
    [^x] 匹配除了x以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符

    后向引用 把子表达式的结果拿来引用 \b(\w+)\b\s+\1\b 可以用来匹配重复的单词,像go go ,或者kitty kitty


    \d 数字
    \D 非数字
    \w 单字字符(0-9,A-Z,a-z)
    \W 非单字字符
    \s 空白(空格符,换行符,回车符,制表符)
    \S 非空白
    [] 由方括号内的一个字符列表创建的自定义字符类匹配任何单个字符

    下面的字符将用于控制将一个子模式应用到匹配次数的过程.
    ? 重复前面的子模式0次到一次
    * 重复前面的子模式0次或多次
    + 重复前面的子模式一次到多次

    匹配中文字符的正则表达式: [\u4e00-\u9fa5]
    匹配双字节字符(包括汉字在内):[^\x00-\xff]
    应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
    String.prototype.len=function(){return
    this.replace([^\x00-\xff]/g,"aa").length;}
    匹配空行的正则表达式:\n[\s| ]*\r
    匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
    匹配首尾空格的正则表达式:(^\s*)|(\s*$)