我正在尝试获取可能包含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中获取数字?
感谢您的帮助
答案 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+
作为参数。