javascript之正则表达式

来源:互联网 发布:龙献文天下数据 编辑:程序博客网 时间:2024/05/21 22:24
  • new
    var re = new RegExp('test','gi');
    var re = /test/gi;
  • function
    test();//bool
    exec();//string 一次匹配并返回
    match();//array 多次匹配并返回
    search();//类似indexOf()
    replace();//替换
    split();//分割
  • 有用的预定义类
    .        [^\n\r]//不包含换行的任何字符
    \d         [0-9]
    \D         [^0-9]
    \s         [\t\n\x0B\f\r]//空字符,换行符
    \S         [^\t\n\x0B\f\r]//非空,非换行
    \w         [a-zA-Z0-9]
    \W         [^a-zA-Z0-9]
  •  量词
    ?         {0,1}
    *         {0,}
    +         {1,}
    {n}     一定出现n次
    {n,m}    至少出现n次,但不超过m次
    {n,}     至少出现n次
  • 贪婪:    "{m,n}", "{m,}", "?", "*", "+"
    (d)(\w+)         "\w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd"
    (d)(\w+)(d)     "\w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "\w+" 也能够匹配上最后一个   "d",  但   是为了使整个表达式匹配成功,"\w+" 可以 "让出" 它本来能够匹配的最后一个 "d"
  • 懒惰:    "{m,n}?", "{m,}?", "??", "*?", "+?"
    (d)(\w+?)         "\w+?" 将尽可能少的匹配第一个 "d" 之后的字符,结果是:"\w+?" 只匹配了一个 "x"
    (d)(\w+?)(d)     为了让整个表达式匹配成功,"\w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,从而使整个表达式匹配成功。因此,结果是:"\w+?" 匹配 "xxx"
  • 分组
    var test = '([1-2])([a-z])';

    test.replace(reg,function(r0,r1){
    console.log(r1);//可用r0,r1进行任意操作
    console.log(RegExp.$1);//等价r1
    });

0 0