2012-12-20 29 views
3

我試圖獲取可以具有如下所示的id(由asp.net webform生成)的控件的行。如何在javascript中使用正則表達式獲取唯一數字

id="contentMain__lvTSEntry__tbxMinute_1" 

我想看看我是否能捕捉只是數字,所以我用下面的JavaScript。

if (e.id.indexOf("_tbxMinute") != -1) {       
    if (parseInt(e.value) > 59) { 
     var cid = e.id; 
     var patt = '\d+' 
     var test = cid.match(patt) 
     alert(test) 
     } 

到目前爲止,我得到。我如何從控件ID獲取數字?

感謝您的幫助

+0

'e.id.indexOf(「_ tbxMinute」)'或'e.id.indexOf(「_ tbxHour」)'? –

+0

@Mario,我犯了一個錯誤,我剛剛糾正 – Richard77

回答

3

如果你改變你的模式字符串從var patt = '\d+'var patt = '\\d+'它應該工作(我在的jsfiddle嘗試做的)

0

你可以使用這樣的事情:

/contentMain__lvTSEntry__tbxHour_(\d+)/ 

它捕獲數字:

> var regex = /contentMain__lvTSEntry__tbxHour_(\d+)/; 
> regex.exec("contentMain__lvTSEntry__tbxHour_1")[1] 
"1" 

或者,你可以只使用/(\d+)/作爲整個正則表達式。

0

您可以使用此代碼,以消除任何非數字字符

"contentMain__lvTSEntry__tbxHour_1".replace(/\D/g,'') 
0

您可以使用本功能,即返回以陣列的所有數字:

function returnNumbers(string){ 
    return string.match(/\d+/g); 
} 

實例:

> returnNumbers('123asd123') 
["123", "123"] 

> returnNumbers('contentMain__lvTSEntry__tbxMinute_1') 
["1"] 
0

如果您正在使用patt爲正則表達式,你應該聲明爲RegExp類型:

var patt = /\d+/;

patt instanceof RegExp; // true

var patt = '\d+'意味着PATT是d+,因爲\d翻譯至d as \是一個轉義字符。然後,match將收到d+而不是\d+作爲參數。

相關問題