2013-01-24 97 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);