3

以下のようなIDを持つことができるコントロールの行を取得しようとしています(asp.net Webフォームによって生成されます)。

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

patt正規表現として使用している場合は、RegExp型として宣言する必要があります。

var patt = /\d+/;

patt instanceof RegExp; // true

var patt = '\d+'はエスケープ文字として asに変換されるd+ため、 patt が であることを意味します。次に、引数として代わりに受け取ります。\dd\matchd+\d+

于 2012-12-20T16:23:17.630 に答える
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 に答える