1

Javascriptの正規表現を使用して数量フィールドの内容を検証したいと思います。

有効な入力は、ゼロから上への整数です。先行ゼロも削除できれば、それは素晴らしいことです。

1         Pass
0         Pass
01        Failed
00        Failed
-1        Failed
1.1       Failed
1000000   Pass

私は自分で試しましたが、私が得た最高のものは...

var regex = /[0-9]{1,9}/;

...負の数、または先行ゼロのある数では失敗しません。

ありがとう!

4

4 に答える 4

4

この正規表現は、先頭のない数字のシーケンスに一致します(個別に処理されるそれ自体0を除く)。0

var regex = /^0$|^[1-9][0-9]*$/;

^$はアンカーであり、文字列の最初と最後に一致を固定します。つまり、数値の前後には何も許可されないため、マイナスを含めることはできません。

于 2012-10-31T16:01:12.430 に答える
1

先行ゼロを禁止するのではなく削除したい場合は、次のように使用できます。

^0*(\d{1,9})$

これで、キャプチャされたグループ番号に末尾ゼロのない番号が表示されます。1(1つだけ0入力した場合でも)。

于 2012-10-31T16:01:01.480 に答える
0
var re = /^0*([^0]\d*)$/;
var match = re.exec(str);
if (match) {
    var i = parseInt(match[1], 10);
}
else {
    //whoops, not an integer
}

(match [1]は先行ゼロなしでintを返し、match [0]は一致した文字列全体を返します)。

于 2012-10-31T16:03:46.750 に答える
0

試してみてください^\d+$。正の整数と一致する必要があります。

于 2012-10-31T16:00:57.353 に答える