在Java for String类中有一个名为matches的方法,如何使用该方法通过正则表达式检查我的字符串是否只有数字。我尝试了下面的例子,但它们都返回了false作为结果。
String regex = "[0-9]";
String data = "23343453";
System.out.println(data.matches(regex));
String regex = "^[0-9]";
String data = "23343453";
System.out.println(data.matches(regex));
发布于 2013-02-27 19:53:50
您还可以使用Apache Commons中的NumberUtil.isNumber(String str)
发布于 2016-02-02 18:07:59
就性能而言,使用正则表达式的代价很高。尝试将字符串解析为长值是低效和不可靠的,而且可能不是您所需要的。
我的建议是简单地检查每个字符是否是一个数字,使用Java 8 lambda表达式可以有效地完成以下操作:
boolean isNumeric = someString.chars().allMatch(x -> Character.isDigit(x));
发布于 2013-02-27 20:05:59
还有一个尚未发布的解决方案:
String regex = "\\p{Digit}+"; // uses POSIX character class
https://stackoverflow.com/questions/15111420
复制相似问题