2015-02-05 26 views
1

我需要一個正則表達式匹配任何/看起來像所有實例{!(。*)}什麼JavaScript RegEx將匹配我的mergefields的所有實例?

我曾嘗試以下: 即。 var mergefield_array = value.match(patt);

其中value = '{LAT!},{LNG!}' 和PATT = /{!(.*)}/

它返回一個結果:{!LAT},{!LNG} 但我希望它在這種情況下返回兩個匹配('{!lat}'和'{!lng}')。

我該怎麼做?

科林摹

回答

2

你的正則表達式在本質上是貪婪的,由於使用的.*因此匹配的第一{持續},抓住在路上什麼。

要解決你可以把它非貪婪:

patt = /{!(.*?)}/g 

或者使用否定:

patt = /{!([^}]*)}/g 
+1

的'g'修改丟失。沒有它只會返回第一場比賽,而不是所有(都)按要求。 – Andreas 2015-02-05 21:41:40

+0

沒錯,我剛添加它。非常感謝 – anubhava 2015-02-05 21:43:30

+0

非常感謝!我看到兩者都有效 - 是否有理由相互選擇一個呢? – 2015-02-06 02:51:10

相關問題