2011-06-29 83 views
1
function(obj){ 
if(obj == undefined || obj == null){ 
    return ''; 
} 

    var id = obj.match(/\d+$/); 

    return id || ''; 
} 

我有一個看起來像一個DOM元素:爲什麼這個JavaScript助手返回一個數組?

id="some-text-123" 

,我想調用上述功能時要返回的ID的「123」的一部分。其他

元素可能是這樣的:

id="123" 
id="some-123" 
id="some-ting-else-1" 

我叫這個看起來像「一些文本-213」

一個元素上,它似乎返回一個數組,我只是想ID回。

+0

「似乎」?做到了,還是沒有? MDC文檔說,除非你指定'/ g'標誌,.match()將返回與'/ \ d + $ /。exec(obj)'相同的值,這應該只是一個字符串。 –

+0

@Marc B:''測試一個兩個「.match(/ t /)'returns'[」t「]' – Robert

回答

1

match方法返回一個數組,其中的第一項包含整個匹配的文本。更新您的return聲明以反映這一點:

return id ? id[0] : ''; 
1

match函數返回一個數組,所以你的函數,如果有一個匹配返回一個數組。

0

Javascript的正則表達式匹配返回匹配結果數組。在所有的測試用例中,它將是一個包含單個值的數組,如[「123」]或[「1」]。如果您有像「123-abcd-456」這樣的測試用例,匹配將返回[「123」,「456」]。

如果您確信您只想第一場比賽,你可以這樣做:

var matches = obj.match(/\d+$/); 
if(matches.length != 0) { 
    return matches[0]; 
} 

return ''; 
0
return id[0] ¦¦ ''; 

將返回第一個比賽是你想要的嗎?

編輯:對不起管炭此時不

1

工作對我來說,你可能想使用一組在正則表達式的括號

var matches = obj.match(/(\d+$)/); 
if(matches.length > 0) { 
    return matches[1]; 
} 
相關問題