1. ホーム
  2. regex

[解決済み】精度2の10進数に対する簡単な正規表現

2022-03-30 13:30:46

質問

精度2の小数を表す正規表現を教えてください。

有効な例 :

123.12
2
56754
92929292929292.12
0.21
3.1

無効な例です。

12.1232
2.23332
e666.76

小数点は省略可能であり、整数も含めることができる。

解き方は?

有効な正規表現トークンは、実装によって異なります。一般的な形式は

[0-9]+(\.[0-9][0-9]?)?

よりコンパクトになりました。

\d+(\.\d{1,2})?

どちらも、小数点以下の桁数が少なくとも1つずつあることが前提です。

文字列全体がこの形式の数であることを要求するには、(Perlの形式では)次のような開始タグと終了タグで式を囲みます。

^\d+(\.\d{1,2})?$

小数点の前の桁がない数字にマッチするように ( .12 ) と、末尾にピリオドを持つ整数 ( 12. ) の入力は除外し、シングルピリオド ( . )の場合、以下を試してみてください。

^(\d+(\.\d{0,2})?|\.?\d{1,2})$


追加

で端数部分を包む。 ()? を使用して、オプションにすることができます。 のような形式は除外されますので、ご注意ください。 12. それを含めると、より ^\d+\\.?\d{0,2}$ .

追加

使用方法 ^\d{1,6}(\.\d{1,2})?$ で繰り返しを止め、小数点以下の数値に制限をかけます。