3

我正在尝试获取可以具有如下 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 中获取数字?

感谢您的帮助

4

5 回答 5

3

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

于 2012-12-20T16:13:37.467 回答
0

你可以使用这样的东西:

/contentMain__lvTSEntry__tbxHour_(\d+)/

它捕获数字:

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

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

于 2012-12-20T16:11:44.070 回答
0

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

"contentMain__lvTSEntry__tbxHour_1".replace(/\D/g,'')
于 2012-12-20T16:17:04.997 回答
0

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

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

例子:

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

> returnNumbers('contentMain__lvTSEntry__tbxMinute_1')
["1"]
于 2012-12-20T16:17:38.177 回答
0

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

var patt = /\d+/;

patt instanceof RegExp; // true

var patt = '\d+'意味着 patt is d+, because\d被翻译为das\是一个转义字符。然后,match将接收d+而不是\d+作为参数。

于 2012-12-20T16:23:17.630 回答