7

浮動小数点数を正規表現と一致させようとしています。小数点の前に数値がある場合とない場合があり、小数点が存在する場合と存在しない場合があり、存在する場合でも、その後に数字がある場合とない場合があります。(このアプリケーションでは、先頭の +/- または末尾の「E123」は使用できません)。私はこの正規表現を書きました:

/^([\d]*)(\.([\d]*))?$/

これは、次のものと正しく一致します。

1
1.
1.23
.23

ただし、これは空の文字列または小数点だけの文字列にも一致しますが、これは望ましくありません。

現在、正規表現を実行した後、$1 または $3 の長さが 0 より大きいことを確認しています。そうでない場合は有効ではありません。これを正規表現で直接行う方法はありますか?

4

3 に答える 3

6

これはあなたが望むことをすると思います。数字で始まる場合 (小数点とその後の数字はオプション)、または小数点で始まる場合 (少なくとも 1 つの数字がその後に必須) のいずれかです。

/^\d+(\.\d*)?|\.\d+$/
于 2008-10-06T13:59:21.470 に答える
0

ケースごとに正規表現を作成し、それらを OR します。次に、式が一致するかどうかをテストするだけです。

/^(\d+(\.\d*)?)|(\d*\.\d+)$/
于 2008-10-06T14:03:55.143 に答える
0

regular-expressions.infoから取得した、非常に遅い回答ですが、回答したい

[-+]?[\d]*\.?[\d]+?

更新これ[\d]*\.?[\d]+?|[\d]+\.はマッチングに役立ちます1.

http://regex101.com/r/lJ7fF4/7

于 2014-10-29T15:01:52.560 に答える