我读了很多正则表达式的问题,但我还没有找到这个......
我想在Java中使用正则表达式来检查字符串(长度没有限制)是否为数字:
包括否定(-4 / -123)
包括0
包括正面(2/123)
不包括+
(+ 4 / + 123)
不包括前导零0
(05/000)
不包括.
(0.5 / .4 / 1.0)
不包括-0
这是我到目前为止所做的:
^(?-)[1-9]+[0-9]*
答案 0 :(得分:7)
是可选的 -
-?
该号码不得以0
开头[1-9]
可能后跟一个任意数字的数字
\d*
0是"不以0规则"开头的例外,因此您可以添加0作为替代。
最终正则表达式
-?[1-9]\d*|0
java代码
String input = ...
boolean number = input.matches("-?[1-9]\\d*|0");