zoukankan      html  css  js  c++  java
  • javascript正则表达式分组捕获理解

    我们先来看一段js代码:

    var rquickExpr = /^(?:(<[wW]+>)[^>]*|#([w-]*))$/;
    console.log(rquickExpr.exec('#div'));//["#div", undefined, "div", index: 0, input: "#div"]
    console.log(rquickExpr.exec('<li>'));//["<li>", "<li>", undefined, index: 0, input: "<li>"]

    解释: (?:(<[wW]+>)[^>]*|#([w-]*)) 中的 (<[wW]+>)[^>]* 或者 #([w-]*) 是不捕获的。

    有三个提示捕获的地方:

    1. ^(?:(<[wW]+>)[^>]*|#([w-]*))$  这个最长的。

    2.(?:(<[wW]+>)[^>]*|#([w-]*))   中的 (<[wW]+>) 是捕获的, 所以 能捕获到,就是捕获的结果,不能捕获到就是 undefined.

    3.(?:(<[wW]+>)[^>]*|#([w-]*))   中的  ([w-]*) 是捕获的, 所以 能捕获到,就是捕获的结果,不能捕获到就是 undefined.

    第一个:rquickExpr.exec('#div')。

      1. 能匹配: ^(?:(<[wW]+>)[^>]*|#([w-]*))$,所以第一个是  #div

      2.不能匹配 :(<[wW]+>)[^>]* ,所以  (<[wW]+>) 这个捕获是  undefined.

      3.能匹配:#([w-]*), 所以 ([w-]*) 这个捕获是 div

    合起来就是 : ["#div", undefined, "div"]

    第二个:rquickExpr.exec('<li>')。

     1. 能匹配: ^(?:(<[wW]+>)[^>]*|#([w-]*))$,所以第一个是  <li>

     2.能匹配 :(<[wW]+>)[^>]* ,所以  (<[wW]+>) 这个捕获是  <li>.

     3.不能匹配:#([w-]*), 所以 ([w-]*) 这个捕获是 undefined.

    合起来就是 : ["<li>", "<li>",undefined]

  • 相关阅读:
    java提高篇(二四)-----HashSet
    链表(线性表)
    逆置线性表(线性表)
    Android布局_表格布局TableLayout
    Android布局_布局概述和LinearLayout布局
    Android_用户界面概述和数据单位
    Android_SDK的常用命令
    Android_程序结构分析
    CSS3_边框属性之圆角的基本图形案例
    CSS3_边框属性之圆角
  • 原文地址:https://www.cnblogs.com/huaan011/p/7221373.html
Copyright © 2011-2022 走看看