3

Javaの実数の適切な正規表現は何ですか?

正規表現を作成([-]?[\\d]*\\.[\\d]*)し、次の予想される出力に対してテストしました。

in                  out        works?
--------------------------------------
qwerty34.34abcd     34.34       yes
qwe-34.34.34abcd    -34.34      no
+17.-9abc           17.0        yes
-.abc0              0.0         no

私は列(アウト)を正確に取得する必要があります。これらすべてのテストに合格する正規表現を提供してください。

4

4 に答える 4

3

正規表現は、次の要件を満たす必要があります。

  1. オプションの記号がある場合があります。試してみてください[+-]?
  2. 0 以上の任意の数字が存在する場合があります。試してみてください[0-9]*
  3. 小数点がある場合があります。[.]バックスラッシュ炎を避けるようにしてください。
  4. 小数点以下は 0 桁以上になる場合があります。試してみてください[0-9]*
  5. #2 と #4 の少なくとも 1 つに数字があります。これは を使用し[0-9]+、代替を使用できます。

このパターンは機能します[+-]?([0-9]*[.]?[0-9]+|[0-9]+[.]?[0-9]*)か? ただし、壊滅的な後戻りが心配です。

于 2013-04-20T11:16:16.223 に答える
2
^[+-]?(?:\d+\.?\d*|\d*\.\d+)$
  • ? 作成+または-オプション用です
  • ?: 非捕捉グループ用です
  • \ エスケープ文字です
于 2013-04-20T11:02:38.767 に答える
2

次はどうでしょう。

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

または、「+」記号を許可する場合は次のもの:

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

ところで、これは正規表現をテストして共有するため素晴らしいウェブサイトです。

于 2013-04-20T11:09:46.723 に答える