139

数値を検証する正規表現が必要ですが、小数点以下の桁は必要ありません。すなわち。

123
123.
123.4

すべて有効になります

123..

無効になります

どなたでも大歓迎です!

4

16 に答える 16

228

以下を使用してください。

/^\d*\.?\d*$/
  • ^-行の始まり。
  • \d*-0桁以上。
  • \.?-オプションのドット(正規表現で.は特殊文字であるため、エスケープされています)。
  • \d*-0桁以上(小数部)。
  • $-行の終わり。

これにより、0.5などの先行ゼロを必要とせずに、小数点以下0.5桁が可能になります。

于 2012-08-24T21:43:44.617 に答える
138
/\d+\.?\d*/

1桁以上(\d+)、オプションのピリオド(\.?)、0桁以上(\d*)。

使用法または正規表現エンジンによっては、開始/終了行アンカーを追加する必要がある場合があります。

/^\d+\.?\d*$/

正規表現の視覚化

Debuggexデモ

于 2012-08-24T21:43:41.667 に答える
21

これはすべての要件に一致します。

^\d+(\.\d+)?$
于 2013-09-05T11:11:33.743 に答える
17

この正規表現を試してください:

\d+\.?\d*

オプションの小数点の前の\d+桁
。?オプションの小数(?数量詞のためにオプション)
\d*小数の後のオプションの数字

于 2012-08-24T21:43:33.820 に答える
7

私は最終的に以下を使用しました:

^\d*\.?\d+$

これにより、以下が無効になります。

.
3.
于 2015-02-11T22:24:11.377 に答える
2

何語?Perl スタイル:^\d+(\.\d*)?$

于 2012-08-24T21:50:21.847 に答える
0

Perl では、Regexp::Common を使用して、特定の数値形式用に微調整された正規表現を組み立てることができます。Perl を使用していない場合でも、通常、生成された正規表現を他の言語で使用できます。

正規表現の例を生成した結果を Regexp::Common::Number で出力します。

$ perl -MRegexp::Common=number -E 'say $RE{num}{int}'
(?:(?:[-+]?)(?:[0123456789]+))

$ perl -MRegexp::Common=number -E 'say $RE{num}{real}'
(?:(?i)(?:[-+]?)(?:(?=[.]?[0123456789])(?:[0123456789]*)(?:(?:[.])(?:[0123456789]{0,}))?)(?:(?:[E])(?:(?:[-+]?)(?:[0123456789]+))|))

$ perl -MRegexp::Common=number -E 'say $RE{num}{real}{-base=>16}'
(?:(?i)(?:[-+]?)(?:(?=[.]?[0123456789ABCDEF])(?:[0123456789ABCDEF]*)(?:(?:[.])(?:[0123456789ABCDEF]{0,}))?)(?:(?:[G])(?:(?:[-+]?)(?:[0123456789ABCDEF]+))|))
于 2013-09-05T12:08:07.207 に答える