2012-05-17 66 views
2

我遇到了這個正則表達式的問題。我想返回此模式的第一個出現#2344....。但不知何故,它返回所有事件。javascript匹配太多次

var title = '#34 #24 pofejwopwefjopewfjpfeijefow' 
pointsRegEx = /(#\d+){1}/; 
points = title.match(pointsRegEx); 

的jsfiddle:http://jsfiddle.net/KbGVU/1

+1

怎麼樣/#\ d + /?你能展示更多的例子嗎? –

+0

它的工作,奇怪我無法封裝它。 – einstein

回答

4

你的正則表達式是工作的罰款。在你的正則表達式中,你有()。這創建了一個組。 .match返回一個數組。第一個元素是整個正則表達式匹配的結果,其他元素來自您的正則表達式。

.match正在返回您['#34','#34'],因爲第1個是整個正則表達式,第2個是您的正則表達式組(#\d+)

注意:{1}不需要,因爲它默認匹配1個匹配項。

.match返回的數組屬性在此處記錄爲:mozilla docs

+0

謝謝!火箭, – einstein

+0

沒問題。 :-) –

+0

@ Woho87如果它幫助你,你應該接受這個正確的答案。這樣做對有同樣問題的人有幫助。 – benekastah

0

了chya ......你不需要匹配匹配戕()分組...

http://jsfiddle.net/KbGVU/3/

/#\d*/應該做

+0

我想他想要一個散列後的數字。所以/#\ d + /會更好。 –

+0

這些都是一樣的東西,一個更貪婪。 – Relic