3

次の正規表現を負の数に拡張したい。

this.value = this.value.replace(/[^0-9\.]/g, "");

(/[^-0-9.]/g, "") のようにマイナス記号を追加しようとしましたが、これによりマイナス記号を数値のどこにでも入力できます。番号の先頭にマイナス記号を 1 つだけ使用できるようにしたい。その後のマイナスの出現は無視する必要があります。

助けてください。

4

5 に答える 5

9

ええと、すべての非数字文字を置き換えると、それは少し難しくなります-それは正規表現を「否定する」ようなものです。私が思いついたのは、負の先読み[^0-9.]であり、マイナス(これは一致する)が文字列の先頭にある場合(開始アンカーを使用)に一致するのを防ぎます。

….replace(/(?!^-)[^0-9.]/g, "")
于 2012-12-12T17:55:24.297 に答える
4

正規表現を使用する理由 どうですか:

var temp = parseFloat(this.value)
this.value = isNaN(temp) ? "" : temp;

これも機能するはずです:

var temp = +this.value;
this.value = isNaN(temp) ? "" : temp;
于 2012-12-12T17:57:19.050 に答える
2

ダッシュを文字クラスの外に置きます。

this.value = this.value.replace(/^-?[^0-9\.]/g, "");
于 2012-12-12T17:47:23.257 に答える
0

あなたが提供した正規表現は、「100 + 200 = 300」を「100200300」に変換するため、正の数自体に問題があります。

これを試してみることをお勧めします: someString.match(/-?[\d]+.?[\d]*/);

于 2012-12-12T18:11:25.067 に答える