2011-11-11 42 views

回答

8
'NowIsAGoodTime'.match(/[A-Z][a-z]*/g) 

[A-Z][a-z][0-9]是被定義爲範圍的字符集。例如,它們可能是[b-xï](從「b」到「x」加「ï」)。

String.prototype.match總是返回數組或null,如果完全不匹配的話。

最後,g regexp標誌代表「全局匹配」。這意味着,它會嘗試在隨後的字符串部分匹配相同的模式。默認情況下(沒有g標誌),它會滿足第一場比賽。

使用全局匹配的正則表達式,match返回一個匹配子串的數組。

使用單個匹配正則表達式,它將返回與整個模式匹配的子字符串,然後是模式組匹配。 E.克:

'Hello'.match(/el(lo)/) // [ 'ello', 'lo' ] 

See moreRegexp

+0

完美!這工作很棒!我可以問一下,如果可能的話,我可以如何在結果中包含4位數字(如單詞)。例如2011NowIsAGoodTime - > ['2011','現在','是','A','好','時間']。我可以很容易地做到這一點,沒有正則表達式(但當然,正則表達式更優雅:-))再次感謝原始問題的解決方案;我理解它,它完美地工作。順便說一句,對我來說,可選的4位數字,如果存在,將始終在字符串的開頭。 – user815460

+0

歡迎您,也感謝@Marcus。 '/([0-9] {4} | [A-Z] [a-z] *)/ g'應包含4位數字。 – katspaugh

+0

再次感謝您的幫助。哇。這很棒。讓我試着解釋它對自己和其他可能需要解釋的人是如何工作的。如果我錯了,請糾正我:可以匹配4個數字或以A-Z開頭的單詞,後跟任意數量的a-z; *僅適用於[a-z]。在()中包含整個表達式是導致返回數組的原因,並且最後的g使它可以工作,但我不知道爲什麼。 – user815460

1

此正則表達式將打破它在所需的部位:

([A-Z][a-z]*) 
相關問題