2013-10-12 184 views
2

我想匹配某些字符串,雖然我必須轉義某些特殊字符,但它仍然沒有正確匹配。與特殊字符匹配的正則表達式字符

我有這個

var first=/.+?(?=\[)/i 

仍然哪些需要只匹配到第一個[

這整個字符串相匹配的字符串業務[帳戶]

我需要匹配然後業務也匹配帳戶。這是一個插件,以後用於獲取對象符號。每個元素都有不同的屬性。

+0

嘗試'.match(/(\ w +)\ [(\ w +)\] /)'來提取兩者。 – elclanrs

回答

2

對於這樣簡單的事情來說,向前看並不是真的有必要。嘗試使用字符類是這樣的:

var first = /[^[]+/ 

這將匹配一個或超過[其他任何字符的。

如果你想工作到一個正則表達式可以匹配像"business[account]"字符串的兩個部分這一點,試試這個:

/([^[]+)\[([^\]]+)\]/ 

這將匹配一個或多個任意字符以外[ ,在組1中捕獲,隨後是[,隨後是在組2中捕獲的除]之外的任何字符中的一個或多個,接着是]

E.g.

console.log(/([^[]+)\[([^\]]+)\]/.exec("business[account]")); 
// ["business[account]", "business", "account"] 
+0

關閉非常接近期望它仍然抓住最後] – EasyBB

+0

好吧我喜歡這一個。雖然我不喜歡輸出。 [「extend [me]」,「extend」,「me」,index:0,input:「extend [me]] – EasyBB

+0

@EasyBB你不喜歡它嗎?輸出有什麼問題嗎? –

2

你快到了;只需添加組(帶圓括號)以匹配您想要的內容:

var m = /(.+?)\[(.+?)\]/.exec("business[account]"); 
console.log("variable: " + m[1], "index: " + m[2]); 
+0

我得到一個未終結的團體 – EasyBB

+1

@EasyBB確保你沒有錯別的地方。 [這是一個在線演示](http:// jsfiddle。net/hcSmf /) – phihag

+0

好,好我不知道爲什麼,但它現在起作用。雖然我應該使用懶惰的操作符,還是應該使用p.s.w.g中的正則表達式 – EasyBB

相關問題