菜鸟读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*(<[\w\W]+>)[^>]*|#([\w-]*))$/,

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

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

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

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

?:

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

|

#([\w-]*)

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

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

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

//这个代码再拆分

\s*//匹配任何空白字符,包括空格、制表符、换页符等等。

<[\w\W]+>

//    \w

匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。

//  \W

匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。

[^>]*//除了>括号结尾的0个或者多个

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

 

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

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

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

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

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

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

你可能感兴趣的:(jquery)