110

この正規表現で負の数も一致させるにはどうすればよいですか? この正規表現は正の値でも問題なく機能しますが、-10、-125.5 などの負の値も許可する必要があります。

^[0-9]\d*(\.\d+)?$

ありがとう

4

15 に答える 15

12

最初にそれが必要な理由がわかりません[0-9]

試す:

^-?\d*(\.\d+)?$

アップデート

一の位に数字があることを確認したい場合は、次を使用します

^-?\d+(\.\d+)?$
于 2013-04-04T14:53:22.780 に答える
3

更新 (2014 年 13 月 8 日):これは、正数と負数の最適なコードです =)

(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}

私はこの数字で試してみましたが、うまくいきます:

-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701
于 2014-08-13T05:07:06.283 に答える
2

django url の正規表現に関するいくつかの実験があります。これには、負の数から正の数が必要でした

^(?P<pid>(\-\d+|\d+))$

(\-\d+|\d+)この部分に注目して他の部分は無視してみましょう。このセミコロンは正規表現のOR|を意味し、負の値はこの部分に一致し、正の値はこれに一致します。\-\d+\d+

于 2015-03-31T04:14:29.560 に答える
1

これにより、正と負の両方の整数が許可されます

ValidationExpression="^-?[0-9]\d*(\d+)?$"

于 2014-12-08T12:34:39.303 に答える
1

の前に追加してから、作業を行う必要があります"-" minus? quantifier[0-9] expression

-?[0-9]

参考のため

  • ^b- ^ quantifier"b" で始まる任意の文字列に一致
  • c?- ? quantifier"c" の 0 回または 1 回の出現に一致
  • [0-9]- の間の任意の文字を見つけます[] brackets
  • \d- から数字を見つける0-9
  • d*- * quantifier"d" の 0 回以上の出現に一致
  • \.- に一致"." character
  • z+- + quantifier「z」の 1 回以上の出現に一致
  • e$- $ quantifier「e」で終わる任意の文字列に一致

質問に投稿された正規表現を理解するのに役立つことを願っています

于 2021-09-06T12:12:44.167 に答える
1

これがありval="-12XXX.0abc23"、10 進数のみを抽出したい場合、この場合、この正規表現 ( ^-?[0-9]\d*(\.\d+)?$) はそれを達成するのに役立ちません。
これは、正しい検出正規表現を使用した適切なコードです。

var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);

于 2019-12-30T06:48:39.320 に答える
0

0 または 1 のトークンを追加するだけです。

^-?[0-9]\d*(.\d+)?$
于 2013-04-04T14:54:33.877 に答える
0

負の数のみの場合、これは完璧です。

^-\d*\.?\d+$
于 2017-08-23T17:24:20.437 に答える