`
kongxiantao
  • 浏览: 108062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jquery 源码中的 正则表达式 分析

阅读更多

   刚刚整理了一下正则表达式,现在来分析一下Jquery中的正则表达式,就当复习了,理解不正确的,希望路过的高手指点

 

1. quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/                      (I)

 

源码中的解释是:A simple way to check for HTML strings or ID strings (both of which we optimize for),都理解就不翻译了。

 

先由中间的“|”把 (I) 拆成3部分

 

[^<]*(<[\w\W]+>)[^>]*$    (A)

 

#([\w\-]+)$           (B)

 

 ^(?: )            (C) 表示不记录子正则表达式(A)或(B)的匹配结果

 

先分析(A) 式,它可以接着拆成如下

 

[^<]*(<[\w\W]+>)     (D)

 

[^>]*  (E) 非>的字符出现0次或多次

 

$  (F) 结束

 

接着在拆分(D)

 

[^<]*  非<的字符出现0次或多次

 

(<[\w\W]+>)   (G)

 

\w表示单词字符,等同于字符集合[a-zA-Z0-9_],\W表示非单词字符,等效于[^a-zA-Z0-9_],"+"表示出现一次或多次

由此可知(G) 的意思就是 :在“<”和“>”之间有一个或多个字符

 

故(A)的意思就是:没有或多个非“<”字符  +  在“<”和“>”之间有一个或多个字符  +  没有或多个 非“>”的字符。简单的说就是

 

$("<ul>")不识别,而它$(" ul "),$("aaa"),$(" ... ")能识别。

在看(B)第一个字符时“#”,后面紧跟一个或多个[a-zA-Z0-9_-]字符,Jquery中识别ID的

$("#.?")不能识别,$("#aaaaa kkk")也不能识别。

 

 

呵呵,现在明白了(I)的意思了。识别html标签和ID值,你可能要问了$("aaaa"),他也能识别,可它不是html标签啊,这个Jquery下面有

if ( selector.nodeType ) {
            this.context = this[0] = selector;
            this.length = 1;
            return this;
        }

中作了判断。

 

关于 nodeType 的介绍,Google介绍的不少。

 

2. isSimple = /^.[^:#\[\.,]*$/,                     (II )

源码中的解释是 : Is it a simple selector

 

这个好理解,还是拆开来说,

^.(B)$                                     (A)

 

[^:#\[\.,]*                     (B)

 

(B)的意思是说 非“:”,非“#”,非“[”,非“.”的字符或“,”没有或出现多次

 

所以(II)的意思就是说:它匹配以一个除了换行字符的字符开始 ,以没有或者多个非“:”,非“#”,非“[”,非“.”的字符结束。

呵呵,由此看出,$(" "),它是匹配的。 isSimple 在源码有只有一个地方用它了。Jquery API中filter 和not方法用isSimple,

它在Jquery中的作用现在还不明白,待研究。

 

3. rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/             (III)

源码中的解释是 : Match a standalone tag

 

现在拆分它 :

 

<(\w+)\s*\/?>                  (A)

 

(?:<\/\1>)?               (B)

 

现在分析(A)

<                          就是 “<”

(\w+)                    一个或多个单词字符 [a-zA-Z0-9_]

\s*                       没有或多个空白字符

\/?                       没有或一个“/”

>                        就是“>”

 

现在分析(B),还是拆分它

 

<\/\1>              (C) 意思是:一个“</” 后跟和(\w+)一样的值 在加上 ">"

 

(?:(C))?            (D)没有或一个(B)

 

现在明白的,就是和源码中解释的一样,匹配独立的标签。

 

4. 先到这,剩下的后面再说。

 

// JSON RegExp
    rvalidchars = /^[\],:{}\s]*$/,
    rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
    rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
    rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,

    // Useragent RegExp
    rwebkit = /(webkit)[\/]([\w.]+)/,
    ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
    rmsie = /(msie) ([\w.]+)/,
    rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,

 

终于扫除了看Jquery源码的有一个拦路虎啊。嘿嘿

 

 

这里有篇相关的文章:
地址:http://jmrware.com/articles/2010/jqueryregex/jQueryRegexes.html

 

分享到:
评论
1 楼 newsletterBroker 2011-03-31  
呵呵,感觉不错!

相关推荐

    jQuery源码分析-02正则表达式

    jQuery源码分析-02正则表达式

    jQuery源码分析-02正则表达式 RegExp 常用正则表达式

    后文预告:jQuery中的正则表达式分析 2.4 常用正则表达式 在网上找到一篇广为流传的文章《常用正则表达式》,逐一分析,不足地方进行补充和纠正。 代码如下: 常用的数字正则(严格匹配) 正则 含义 ^[1-9]\d*$ 匹配...

    基于jquery实现的密码强度正则表达式源码.zip

    基于jquery实现的密码强度正则表达式源码.zip

    jquery以及正则表达式入门学习

    包含的源代码文件以及jquery.js 博文链接:https://canofy.iteye.com/blog/142341

    尚硅谷书城项目说明1

    尚硅谷网上书城第一阶段:登录、注册的验证使用jQuery技术对登录中的用户名、密码进行非空验证使用jQuery技术和正则表达式对注册中的用户名、密码、确认密码、

    期末作品网页制作css+js+jquery

    (1) 使用正则表达式验证注册页面信息 (2) 网站首页动态显示系统时间 (3) 动态改变导航菜单样式 (4) 制作图片轮显效果 (5) 制作随光标滚动的广告图片效果 (6) 制作光标移到某图片上显示该图片对应大图 ...

    这是一个简单登陆验证也可以改为检查用户名是否存在的ajax例子(可以自由扩张)

    ajax学习(ajax in Ation和说明XMLHTTPRequest 的两本书) 博文链接:https://qsrock.iteye.com/blog/170328

    jQuery formValidator表单验证插件示例源码

    jQuery formValidator表单验证插件示例源码 jQuery formValidator表单验证插件是什么? jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的...

    jQuery技术内幕:深入解析jQuery架构设计与实现原理

    鉴于这种复杂的体系架构,以及对浏览器缺陷的完善也非短期可以完成,开始为这款机顶盒浏览器移植jQuery,从而开始了对jQuery源码的学习和分析。 从2011年6月开始,开始把心得和记录整理成《jQuery 1.6.1源码分析系列...

    经典:WEB开发必备参考资料

    XMLHTTP 手册.CHM 正则表达式系统教程.CHM ...prototype.chm XMLDOM对象手册.chm DHTML默认行为手册.chm 设计模式手册.chm DOM文档对象模型手册.chm SQL参考手册.chm 网页设计配色常识.chm ...Jquery1.2.6源码分析.pdf

    最完整最全面的网站开发帮助文档,开发网站必不可少的工具书

    8.Jquery1.2.6源码分析.pdf 9.jQueryAPI_CHM.CHM 10.JScript5.5.chm 11.MySQL中文参考手册.chm 12.mysql中文手册.chm 13.php4gb中文手册.chm 14.PHP_MySQL教程.chm 15.PHP的一些例程.chm 16.php精华文摘.chm 17.php...

    WEB开发必备几乎包含所有参考资料

    100道逻辑思维趣题,ajax框架:dwr》实战(包括整合),Ajax中英文对照手册,CSS2 – Quick Reference ...WINDOWS脚本技术,华为内部程序设计培训,全新java基础实践教程,设计模式手册,网页设计配色常识,正则表达式系统教程

    jQuery 源码分析笔记(2) 变量列表

    在初始化jQuery对象的代码开始之前声明了一大堆变量。主要包括:全局变量的备份;处理字符串用的正则表达式;检测浏览器的正则表达式;对核心函数的引用备份。这里略过大部分,只说两种:全局变量和浏览器检测。

    jQuery表单验证插件baigoValidator 0.1.0.zip

    DEMO中已经包含了常用的正则表达式,可以直接复用,为了考虑扩展性,所以针对不同用户特殊需求,自行写正则吧。文件结构:1.baigoValidator.js 验证插件2.baigoValidator.css CSS 样式3.status_x.png 验证失败时的...

    经典web开发必备参考资料

    【DOM文档对象模型手册】【gecko_dom】【Jquery1.2.6源码分析】【JScript5.5】 【MySQL中文参考手册】【mysql中文手册】 【php4gb中文手册】【PHP_MySQL教程】 【PHP的一些例程】【php精华文摘】 【php新手上路】...

Global site tag (gtag.js) - Google Analytics