菜鸟读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。

原文地址:https://www.cnblogs.com/nunn/p/3512856.html