zoukankan      html  css  js  c++  java
  • JS正则表达式进阶

    贪婪量词   惰性量词    支配量词                      描述
    -------------------------------------------------------------------------------------
      ?             ??             ?+                      可以出现0次或1次,但至多出现1次
      *             *?            *+                      可以出现任意次,也可以不出现
      +             +?            ++                      出现1次或多次,但至少出现1次
      {n}        {n}?           {n}+                   一定出现n次
      {n,m}    {n,m}?       {n,m}+               至少出现n次,但至多不能超过m次
      {n,}       {n,}?          {n,}+                 可以出现任意次,但至少出现n次 

    JS不支持支配量词

    分组:

    在JavaScript和Java中,捕获性分组所匹配的内容都是以$1,$2,$3...的格式保存的!

    如:

    var now = "25/10/2009";
    /(dd)/(dd)/(dddd)/.test(now);
    alert(RegExp.$3+"-"+RegExp.$2+"-"+RegExp.$1); //2009-10-25

    1.子正则表达式 形式:/(子正则表达式)/

    alert(/(w)w/.exec('helloword')); //he, h  第一个he是全匹配,第二个h是()里的子表达式匹配,所以()就是一个子表达式。也就是分组捕获内容。

    分组捕获内容按左小括号计算,$1, $2...

    分组捕获内容可以在外部使用,也可以在正则表达式内部使用(有点象程序变量,这时候叫反向引用)

    外部使用:

    var v = '1234 5678'.replace(/(d{4}) (d{4})/, "$2 $1");
    alert(v); //5678 1234;

    内部使用:

    零宽断言
    正则       名称       描述
    (?=exp) 正向前瞻 匹配exp前面的位置
    (?!exp) 负向前瞻 匹配后面不是exp的位置
    (?<=exp) 正向后瞻 匹配exp后面的位置不支持
    (?<!exp) 负向后瞻 匹配前面不是exp的位置不支持

    正向前瞻用来检查接下来的出现的是不是某个特定的字符集。而负向前瞻则是检查接下来的不应该出现的特定字符串集。零宽断言是不会被捕获的。

  • 相关阅读:
    SQL补充
    SQL练习题
    HDU 2907
    Codeforces 814D
    Codeforces 814C
    Codeforces 1004D
    Codeforces 1004E
    CodeForces 909F
    CodeForces 909E
    CodeForces 909D
  • 原文地址:https://www.cnblogs.com/DSharp/p/3711723.html
Copyright © 2011-2022 走看看