• 菜鸟读jQuery 2.0.3 源码分析系列(2)


    原文链接在这里,作为一个菜鸟,我就一边读一边写

    jQuery 2.0.3 源码分析系列

    我是菜鸟,推荐木有入门或者刚刚JS入门摸不着边的看看,大大们手下留情,想一起学习的Jser可以给我留言。

    今天写一点,第二篇jQuery选择器

    // A simple way to check for HTML strings
    //一个简单的方法来检查HTML字符串
    //
    Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
    //优先处理#id为了避免通过XSS攻击 // Strict HTML recognition (#11290: must start with <) //严格的HMLT识别
    rquickExpr = /^(?:s*(<[wW]+>)[^>]*|#([w-]*))$/,

     看到这个就知道哭瞎两个字怎么写了。。看来看去最后还是逃不脱正则的魔掌/(ㄒoㄒ)/~~

    我先拆分一下这个正则吧。

    ^(?:s*(<[wW]+>)[^>]*|#([w-]*))$
    ?:s*(<[wW]+>)[^>]*|#([w-]*)
    ?:
    s*(<[wW]+>)[^>]*
    |
    #([w-]*)

    拆分之后就是上面了。
    ?: |

    这个应该是一个正则表达方式,我看了文字描述始终有些不懂。之前看了,又忘掉啦!!等一会找篇文章看看复习下。

    s*(<[wW]+>)[^>]*
    //这个代码再拆分
    s*//匹配任何空白字符,包括空格、制表符、换页符等等。
    <[wW]+>
    //    w
    匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
    //  W
    匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
    [^>]*//除了>括号结尾的0个或者多个

    上面这个正则,的意思就是,匹配开头没有或者多个空白字符,
    第二个字符是<中间有一个或者多个任意字符串(wW包括了所有字符)下一个字符是>,最后字符不是>结尾的字符串

    3. #([w-]*))$

    • 匹配结尾带上#号的任意字符,包括下划线与-

    吐槽文章中的这一句话,实在是有歧义啊。。

    应该这么理解。匹配以#号开头的任意字符串结尾。

    (?:pattern) 匹配pattern但不获取匹配的子字符串,也就是说这是一个非获取匹配,不存储匹配的子字符串用于向后引用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。

     总结一下,上面的这个正则表达式所表达的是,匹配任何html标签和#id。

  • 相关阅读:
    用 Python、 RabbitMQ 和 Nameko 实现微服务
    自定义Docker容器的 hostname
    ubuntu下升级R版本
    pair correlation ggpair ggmatrix
    RabbitMQ消息队列(一): Detailed Introduction 详细介绍
    ng-controller event data
    node项目换了环境node_modules各种报错
    Blast本地化
    angularjs $q、$http 处理多个异步请求
    解决angular页面值闪现问题
  • 原文地址:https://www.cnblogs.com/nunn/p/3512856.html
Copyright © 2020-2023  润新知