如何在javascript中使用正则表达式获取唯一数字

时间:2012-12-20 16:09:16

标签: javascript regex

我正在尝试获取可能包含ID的控件行,如下所示(由asp.net webform生成)。

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)
      } 

到目前为止,我正在 null 。如何从控件ID中获取数字?

感谢您的帮助

5 个答案:

答案 0 :(得分:3)

如果您将模式字符串从var patt = '\d+'更改为var patt = '\\d+',它应该可以正常工作(我尝试jsfiddle做了)

答案 1 :(得分:0)

您可以使用以下内容:

/contentMain__lvTSEntry__tbxHour_(\d+)/

它捕获数字:

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

或者,您可以使用/(\d+)/作为整个正则表达式。

答案 2 :(得分:0)

您可以使用此代码删除任何非数字字符

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

答案 3 :(得分:0)

您可以使用此函数返回数组中的所有数字:

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

示例:

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

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

答案 4 :(得分:0)

如果您使用patt作为正则表达式,则应将其声明为RegExp类型:

var patt = /\d+/;

patt instanceof RegExp; // true

var patt = '\d+'表示patt为d+,因为\d被翻译为d,因为\是转义字符。然后,match将收到d+而不是\d+作为参数。