2013-07-09 56 views
3

好吧..我想對jQuery內核中的正則表達式匹配器進行一些小的更改以實現我的目標:允許匹配標記名稱中縱橫馳騁如何指定我的正則表達式的非捕獲組以允許帶有破折號的標記

例子:<auto-link/><user-circle/><something-else></something-else>

今天,jQuery的標籤匹配/正則表達式被聲明爲rsingleTag變量,可以see here自身的源代碼,但它不符合我的需要。於是我來到了我的修改變化:

  • 默認的正則表達式:/^<(\w+)\s*\/?>(?:<\/\1>|)$/
  • 修改正則表達式與破折號:/^<(\w(\w|-\w)*\s*\/?)>(?:<\/\1>|)$/

所以,我所做的更改是完全匹配的,但是當我嘗試提取字符串從它使用rsingleTag.exec("<auto-link/>")預期的結果是不相似的jQuery默認正則表達式。

  • 默認正則表達式:rsingleTag.exec("<div/>") =>["<div/>", "div"]
  • 改性的正則表達式與破折號:rsingleTag.exec("<div/>") =>["<div/>", "div/", "v"]

我想修改的正則表達式的結果是相同的作爲默認的正則表達式的結果加上允許標記用破折號。我做錯了什麼,或者如何解決?

回答

3
/^<(\w(\w|-\w)*\s*\/?)>(?:<\/\1>|)$/ - your attempt 
/^<(\w[-\w]*)\s*\/?>(?:<\/\1>|)$/  - your intention 
+0

aaaaaand .... perfect! – mateusmaso

+1

要回答你的問題,你可以使用'(?:\ w | - \ w)*'或'(?: - ?\ w +)*'(非捕獲組)而不是'[ - \ w] 。這將是正確的,因爲我的解決方案允許像''這樣的標籤。 – Tomalak

相關問題