我想检查字符串是否为正数,但我不想使用,Integer.parseInt()因为用户可能输入的数字大于int.相反,如果数字字符串包含所有"0"字符,我宁愿使用正则表达式返回false.
if(val.matches("[0-9]+")){
// We know that it will be a number, but what if it is "000"?
// what should I change to make sure
// "At Least 1 character in the String is from 1-9"
}
Run Code Online (Sandbox Code Playgroud)
注意:字符串必须只包含0- 9并且它不能包含所有0s; 换句话说,它必须至少有1个字符[1-9].
BigInteger如果你试图使用任意大的整数,你最好不要使用,但是下面的模式应该匹配包含至少一个非零字符的一系列数字.
\d*[1-9]\d*
Run Code Online (Sandbox Code Playgroud)

Debugex的单元测试看起来有些小问题,但你可以在那里玩这种模式.它很简单,它应该是合理的跨语言兼容,但在Java中你需要逃避它.
Pattern positiveNumber = Pattern.compile("\\d*[1-9]\\d*");
Run Code Online (Sandbox Code Playgroud)
注意上面(故意)匹配我们通常不会认为是"正自然数"的字符串,因为有效字符串可以以一个或多个0s 开头,例如000123.如果您不想匹配此类字符串,则可以进一步简化模式.
[1-9]\d*
Run Code Online (Sandbox Code Playgroud)

Pattern exactPositiveNumber = Pattern.compile("[1-9]\\d*");
Run Code Online (Sandbox Code Playgroud)