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)。 请提供通过所有这些测试的正则表达式。
答案 0 :(得分:3)
尝试以下方法:
((\+|-)?([0-9]+)(\.[0-9]+)?)|((\+|-)?\.?[0-9]+)
这将匹配实数,包括整数,有或没有符号(在小数点前有或没有数字)。
答案 1 :(得分:2)
^[+-]?(?:\d+\.?\d*|\d*\.\d+)$
?
用于制作+
或-
选项?:
适用于非捕获组\
是一个转义字符答案 2 :(得分:2)
正则表达式必须满足以下要求:
[+-]?
。[0-9]*
。[.]
以避免反冲突。[0-9]*
。[0-9]+
,它可以使用交替。此模式是否有效:[+-]?([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一个不错的网站,用于测试和分享正则表达式。