请诸位帮忙,写一个正则表达式,判断字符串是否是小数,用java代码判断我已经写好了,不过正则表达式怎么写,我不知道,虚心求教。大致的判断逻辑是,第一位可以为+-.数字,之后如果第...
请诸位帮忙,写一个正则表达式,判断字符串是否是小数,用java代码判断我已经写好了,不过正则表达式怎么写,我不知道,虚心求教。
大致的判断逻辑是,第一位可以为+-.数字,之后如果第一位是.的话,那么只能是数字,如果第一位不是.,那么可以包含一个.及任意位数字。
public static boolean isBigDecimal(String value) {
char[] charArray = value.toCharArray();
int length = charArray.length;
if (length == 0) {
return false;
}
char first = charArray[0];
// 如果不以.+-数字开头,那么不是小数
boolean net = first == '.';
if (!net && first != '+' && first != '-' && !Character.isDigit(first)) {
return false;
}
// 如果第一位有点,那么从第二位开始,只能是数字
if (net) {
for (int i = 1; i < length; i++) {
if (!Character.isDigit(charArray[i])) {
return false;
}
}
} else {
// 如果第一位不是点,那么要判断,只能有一个点
for (int i = 1; i < length; i++) {
first = charArray[i];
if (first == '.') {
// 两个点的情况下,算错
if (net) {
return false;
}
net = true;
} else {
if (!Character.isDigit(first)) {
return false;
}
}
}
}
return true;
}
展开