Java中实数的正则表达式是什么?

时间:2013-04-20 10:15:43

标签: java regex

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

我必须准确地了解列(out)。 请提供通过所有这些测试的正则表达式。

4 个答案:

答案 0 :(得分:3)

尝试以下方法:

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

这将匹配实数,包括整数,有或没有符号(在小数点前有或没有数字)。

答案 1 :(得分:2)

^[+-]?(?:\d+\.?\d*|\d*\.\d+)$
  • ?用于制作+-选项
  • ?:适用于非捕获组
  • \是一个转义字符

答案 2 :(得分:2)

正则表达式必须满足以下要求:

  1. 可能有一个可选的标志。试试[+-]?
  2. 可能有0个或更多可选数字。试试[0-9]*
  3. 可能有一个小数点。请尝试[.]以避免反冲突。
  4. 小数点后可能有0位或更多位数。试试[0-9]*
  5. #2和#4中至少有一个有数字。这将使用[0-9]+,它可以使用交替。
  6. 此模式是否有效:[+-]?([0-9]*[.]?[0-9]+|[0-9]+[.]?[0-9]*)?然而,我担心灾难性的回溯。

答案 3 :(得分:1)

下一个怎么样:

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

或下一个如果你想允许“+”符号:

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

BTW,here's一个不错的网站,用于测试和分享正则表达式。