2013-07-05 48 views
0

我想我真的不明白正則表達式的東西,所以我需要幫助符合以下簡單的模式:JS正則表達式:簡單配以可選部分

SOME_TEXT _Syn: SYN_TEXT _Ant: ANT_TEXT 

報價是裝飾性的,X_TEXT是任何文本(即不不含_Syn:或_Ant:這是特殊的縮寫),_Syn或_Ant部分是可選的

我需要得到SOME_TEXTSYN_TEXTANT_TEXT在陣列

因此,例如,如果_Syn部分不存在(輸入是SOME_TEXT _Ant: ANT_TEXT)結果應該是[SOME_TEXT, '', ANT_TEXT]

嘗試使用延遲修飾符的不同方法,但未能實現它。

+0

我有點困惑你的可能的輸入可以是什麼樣子。你能舉幾個明確的例子嗎?也許顯示你嘗試的正則表達式代碼? –

回答

2
/(.*?)(?:_Syn:(.*?))?(?:_Ant:(.*?))?$/ 

重要的部分是.*這使得他們不願意(不貪)後?$在迫使比賽,儘管所有可選的比賽結束。

+0

謝謝,這可以解決問題。 – WHITECOLOR

1

使用這個表達式

var n=str.match(/(SOME|SYN|ANT)_TEXT/g); 

n將包含匹配的字符串數組