Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript提取字符串中的未知数字_Javascript_Asp.net_Regex - Fatal编程技术网

Javascript提取字符串中的未知数字

Javascript提取字符串中的未知数字,javascript,asp.net,regex,Javascript,Asp.net,Regex,我有一个字符串ctl00\u contentPlaceholder 1\u lstViewFormulas\u ctrl06\u lblCountDown,它将使用我的asp.net按钮控件中的sender进入javascript函数 <asp:Button ID="buttStartTimer" runat="server" CausesValidation="false" OnClientClick="javascript:countdown(this);" Text="Start"

我有一个字符串ctl00\u contentPlaceholder 1\u lstViewFormulas\u ctrl06\u lblCountDown,它将使用我的asp.net按钮控件中的sender进入javascript函数

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

功能测试(发送器){

}

需要在ctrl之后直接获取数字,在上面的示例中,数字是06(ctrl06\u lblCountDown)

如何使用javascript提取此数字


谢谢

您可以使用正则表达式轻松提取:

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

更安全的方式:


工作示例:

您可以尝试以下方法:

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);
var str='ctrl06\u lblCountDown',
数值数组=[],
数值字符串,
号码,
i=0,
len=0;
numericArray=str.match(/[0-9]/g);
len=数值数组长度;
numericString='';

对于(i=0;iIs),它总是紧跟在字符串“ctrl”之后?可能重复的?您能提供几个不同的字符串,以便我们看到每个字符串之间的差异吗?我尝试了下面的两个答案,但都没有返回值。ctrl输出数字可以是任何数字,即ctrl45,但它们只是数字。@Sheritager,我在我的答案中添加了一个工作示例。请看一下:我没有假设OP想要的结果是
06
而不是
6
,那么不要
parseInt()
,其余的都是一样的。我会在没有parseInt的情况下尝试,我也检查了parseInt,以确保发送方发送了正确的信息。这是我从发送方那里得到的……”ctl00\u contentplaceholder 1\u lstViewFormulas\u ctrl2\u buttStartTimer“我切换到IE并得到错误…SCRIPT438:Object不支持属性或方法“match”,我看到了你的示例,它在JSFIDLE中工作得很好,但在我的应用程序中不工作。我正在使用asp.net 4,这有关系吗。我切换到IE并得到错误…SCRIPT438:Object不支持属性或方法“match”,你确定
match
是正确的吗用字符串调用?我确实检查了发送者是什么,它是“ctl00\u contentplaceholder 1\u lstViewFormulas\u ctrl2\u buttStartTime”,我使用onclientclick=“javascript:countdown(this);”在asp.net按钮控件中引用发送者我知道我一定是做错了什么,这影响了我得到的答案。有什么想法吗?好的,我只是做了一个警报,看看发送者是什么,它是控件。我将尝试使用sender.idAdded id给发送者,现在它是一个字符串…我想我已经做了很长时间了…很抱歉:-)我现在知道了号码,它像冠军一样工作!非常感谢你的帮助,让我思考。
var str = "ctl00_ContentPlaceHolder1_lstViewFormulas_ctrl06_lblCountDown",
    result = str.match(/.*ctrl(\d+).*/)[1];
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);