刚刚整理了一下正则表达式,现在来分析一下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
分享到:
相关推荐
jQuery源码分析-02正则表达式
后文预告:jQuery中的正则表达式分析 2.4 常用正则表达式 在网上找到一篇广为流传的文章《常用正则表达式》,逐一分析,不足地方进行补充和纠正。 代码如下: 常用的数字正则(严格匹配) 正则 含义 ^[1-9]\d*$ 匹配...
基于jquery实现的密码强度正则表达式源码.zip
包含的源代码文件以及jquery.js 博文链接:https://canofy.iteye.com/blog/142341
尚硅谷网上书城第一阶段:登录、注册的验证使用jQuery技术对登录中的用户名、密码进行非空验证使用jQuery技术和正则表达式对注册中的用户名、密码、确认密码、
(1) 使用正则表达式验证注册页面信息 (2) 网站首页动态显示系统时间 (3) 动态改变导航菜单样式 (4) 制作图片轮显效果 (5) 制作随光标滚动的广告图片效果 (6) 制作光标移到某图片上显示该图片对应大图 ...
ajax学习(ajax in Ation和说明XMLHTTPRequest 的两本书) 博文链接:https://qsrock.iteye.com/blog/170328
jQuery formValidator表单验证插件示例源码 jQuery formValidator表单验证插件是什么? jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的...
鉴于这种复杂的体系架构,以及对浏览器缺陷的完善也非短期可以完成,开始为这款机顶盒浏览器移植jQuery,从而开始了对jQuery源码的学习和分析。 从2011年6月开始,开始把心得和记录整理成《jQuery 1.6.1源码分析系列...
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...
100道逻辑思维趣题,ajax框架:dwr》实战(包括整合),Ajax中英文对照手册,CSS2 – Quick Reference ...WINDOWS脚本技术,华为内部程序设计培训,全新java基础实践教程,设计模式手册,网页设计配色常识,正则表达式系统教程
在初始化jQuery对象的代码开始之前声明了一大堆变量。主要包括:全局变量的备份;处理字符串用的正则表达式;检测浏览器的正则表达式;对核心函数的引用备份。这里略过大部分,只说两种:全局变量和浏览器检测。
DEMO中已经包含了常用的正则表达式,可以直接复用,为了考虑扩展性,所以针对不同用户特殊需求,自行写正则吧。文件结构:1.baigoValidator.js 验证插件2.baigoValidator.css CSS 样式3.status_x.png 验证失败时的...
【DOM文档对象模型手册】【gecko_dom】【Jquery1.2.6源码分析】【JScript5.5】 【MySQL中文参考手册】【mysql中文手册】 【php4gb中文手册】【PHP_MySQL教程】 【PHP的一些例程】【php精华文摘】 【php新手上路】...