原文連接在這裏,做爲一個菜鳥,我就一邊讀一邊寫html
我是菜鳥,推薦木有入門或者剛剛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。