2013-01-24 101 views
1

我有一個字符串ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown將進入使用發件人從我的asp.net按鈕控制的JavaScript函數數目不詳...的Javascript提取字符串

<asp:Button ID="buttStartTimer" runat="server" CausesValidation="false" OnClientClick="javascript:countdown(this);" Text="Start" /> 

功能測試(發件人){

}

在需要得到的數量直接以下CTRL,在上面的例子中這將是06(ctrl06_lblCountDown)

如何使用JavaScript提取此數字?

感謝

+0

是嗎? – Floris

+0

可能重複[如何使用Javascript正則表達式提取字符串](http://stackoverflow.com/questions/1707299/how-to-extract-a-string-using-javascript-regex) – Lloyd

+1

可以提供幾個不同的字符串,所以我們可以看到每個之間有什麼不同? – dgig

回答

1
var str = "ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown", 
    result = str.match(/.*ctrl(\d+).*/)[1]; 

工作例如:http://jsfiddle.net/RXGb2/

+0

我看見你的例子,它的jsfiddle的偉大工程,但不在我的應用程序中。我使用的是asp.net 4,這很重要。 我切換到IE並得到錯誤... SCRIPT438:對象不支持屬性或方法'匹配' –

+0

你確定'匹配'是用字符串調用嗎? –

+0

我做了檢查,看看發件人是什麼,它是「ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl2_buttStartTime」 我引用發件人在我的asp.net按鈕控件使用onclientclick =「javascript:countdown(this);」 我知道我必須做一些錯誤的事情,這會影響我得到的答案。有任何想法嗎? –

0

您可以提取是使用正則表達式容易:

var str = "ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown"; 
var num = parseInt(str.match(/_ctrl([\d]*)_/)[1], 10); 

更安全的方式:

var str = "ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown"; 
var parts = str.match(/_ctrl([\d]*)_/), num; 
if(parts.length > 1) { 
    num = parseInt(parts[1], 10); 
} 
+0

我想OP的結果是'06'而不是'6' –

+0

然後不''parseInt()',其餘的是相同。 – techfoobar

+0

我會嘗試沒有parseint 我也檢查,以確保發件人發送正確的信息,它是。這是我從發件人得到... 「ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl2_buttStartTimer」 –

0

你可以嘗試這樣的事:總是字符串 「CTRL」 之後

var str = 'ctrl06_lblCountDown', 
    numericArray = [], 
    numericString, 
    num, 
    i=0, 
    len = 0; 


numericArray = str.match(/[0-9]/g); 

len = numericArray.length; 

numericString = ''; 
for(i=0; i<len; i++){ 
    numericString += numericArray[i]; 

} 

num = parseInt(numericString,10);