菜鳥讀jQuery 2.0.3 源碼分析系列(2)

 

原文連接在這裏,做爲一個菜鳥,我就一邊讀一邊寫html

jQuery 2.0.3 源碼分析系列web

我是菜鳥,推薦木有入門或者剛剛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ㄒ)/~~學習

我先拆分一下這個正則吧。ui

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

拆分以後就是上面了。
?: |spa

這個應該是一個正則表達方式,我看了文字描述始終有些不懂。以前看了,又忘掉啦!!等一會找篇文章看看複習下。code

\s*(<[\w\W]+>)[^>]*
//這個代碼再拆分
\s*//匹配任何空白字符,包括空格、製表符、換頁符等等。
<[\w\W]+>
//    \w
匹配包括下劃線的任何單詞字符。等價於「[A-Za-z0-9_]」。
//  \W
匹配任何非單詞字符。等價於「[^A-Za-z0-9_]」。
[^>]*//除了>括號結尾的0個或者多個

上面這個正則,的意思就是,匹配開頭沒有或者多個空白字符,
第二個字符是<中間有一個或者多個任意字符串(\w\W包括了全部字符)下一個字符是>,最後字符不是>結尾的字符串orm

 

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

  • 匹配結尾帶上#號的任意字符,包括下劃線與-

吐槽文章中的這一句話,實在是有歧義啊。。

應該這麼理解。匹配以#號開頭的任意字符串結尾。

(?:pattern) 匹配pattern但不獲取匹配的子字符串,也就是說這是一個非獲取匹配,不存儲匹配的子字符串用於向後引用。這在使用或字符「(|)」來組合一個模式的各個部分是頗有用。例如「industr(?:y|ies)」就是一個比「industry|industries」更簡略的表達式。

 總結一下,上面的這個正則表達式所表達的是,匹配任何html標籤和#id。

相關文章
相關標籤/搜索