Java - 普通正负数的正则表达式

J. *_*Doe 2 java regex string pattern-matching

我读了很多正则表达式的问题,但我还没有找到这个...

我想在Java中使用正则表达式来检查字符串(长度没有限制)是否为数字:

  • 包括负数(-4/-123)

  • 包含 0

  • 包括正面(2/123)

  • 不包括+(+ 4/+ 123)

  • 排除前零0(05/000)

  • 不包括.(0.5/.4/1.0)

  • 排除 -0

这是我到目前为止所做的:

^(?-)[1-9]+[0-9]*
Run Code Online (Sandbox Code Playgroud)

fab*_*ian 7

这是一个可选的 -

-?
Run Code Online (Sandbox Code Playgroud)

该数字不得以0开头

[1-9]
Run Code Online (Sandbox Code Playgroud)

它可以跟随一个任意数字的数字

\d*
Run Code Online (Sandbox Code Playgroud)

0是"不以0规则开始"的例外,因此您可以添加0作为替代.

最终的正则表达式

-?[1-9]\d*|0
Run Code Online (Sandbox Code Playgroud)

java代码

String input = ...

boolean number = input.matches("-?[1-9]\\d*|0");
Run Code Online (Sandbox Code Playgroud)