我正在尝试编写REGEX以仅接受1-100之间的数字。如果它接受从1到无穷大的所有东西,那将是很棒的,但这可能是复杂的 - 或者是不可能的。
public static boolean isNumeric(String str) {
return str.matches("-?\\d+(\\.\\d+)?");
}//end boolean.
答案 0 :(得分:3)
如果它接受从1到无穷大的所有东西,那将是很棒的,但这可能是复杂的 - 或者是不可能的。
如何简单"[1-9]\\d*"
?
这将接受非零数字,后跟任何数字序列。换句话说,任何正整数。
答案 1 :(得分:3)
public static boolean isNumeric(String str) throws NumberFormatException {
int i = Integer.parseInt(str);
return i > 0 && i < 100; //Arbitrary numbers within range of int
}
不使用正则表达式,但这应该完成同样的事情。将字符串转换为整数,然后检查它是否在您想要的范围内。
答案 2 :(得分:1)
如果您想要非常彻底,可以使用"-?(0|([1-9][0-9]*))\.?[0-9]*"
,它应该为您提供从-infinity到+ inifinity的所有数字。摆脱-?
会给你所有正数。 "0|(-?[1-9][0-9]*)"
应该给你从-infinity到+ infinity的所有整数。 "[1-9][0-9]*"
将为您提供大于0的所有整数。