2016-07-14 163 views
0

我認爲這是一個非常基本的問題,但我真的無法理解這個概念。我有以下的正則表達式:正則表達式(匹配函數),javascript

var t = '11:59 am'; 
t.match(/^(\d+)/); 

現在,根據我的理解,當我打印的價值,我應該只得到11,因爲我只是檢查數字。但是,我得到11,11。我必須使用第0個元素來選擇所需的值,如t.match(/^(\d+)/)[0]

回答

1

這是因爲您在數字周圍使用了capture group, (),。嘗試更換此:

t.match(/^\d+/); 

注:這仍然會返回一個數組,因爲這正是.match()一樣。

+1

謝謝sam.I現在明白了。我深知捕獲小組。 –

+1

很高興我能幫到你。對不起,據我所知,沒有一個好的JS正則表達式方法只返回一個簡單的字符串,而不是一組數據。 ['/^\d+/.exec(t)'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec)將返回'['11' ]'。 – Sam

1

match()always returns an array如果有任何匹配。元素[0]是整個匹配,元素[1]是第一組圓括號內的元素。