2013-07-25 50 views
1

我想匹配一些字符串像'[932A]'在Javascript中。精簡版是:JavaScript模式匹配只返回第一次打

'[625A] [625B] [625C]'.match(/\[[0-9]*[A-Z]+\]/) 

返回一個數組,其中有1個元素,第一個命中。這顯然是爲什麼?

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match –

回答

1

是的,你只需要在正則表達式中添加全局標誌。這是通過添加一個'g'來完成的。你得到的正則表達式應該是這樣的:

/[[0-9]*[A-Z]+]/g 
2

你需要做一個全球性的正則表達式,使用最終g長期

'[625A] [625B] [625C]'.match(/[[0-9]*[A-Z]+]/g) 
2

您需要指定要得到所有的比賽與全球旗幟。例如(注意g的結尾):

/[0-9]/g 

當不用於分隔字符類時,您還需要轉義方括號。例如:

/\[[0-9]+\]/ 

這將匹配方括號內的一個或多個數字。

+0

我很確定額外的反斜槓是必要的,因爲它們不包含字符類...它們包含確保外方括號是普通字符的其他語法。 – Pluto