今天遇到个需要用正则进行匹配的问题
输入年薪,匹配可以为0,可以是正整数,也可以是小数,
网上看了很多帖子,没有能直接同时匹配的,0125 ,01.125 , 00.0 这种..总是匹配错误
作为正则小白,只能换个方法匹配2次。
先去除小数点后多余的0
public static String removeZeroAndDot(String s) {
if (s.indexOf(".") > 0) {
<span style="white-space:pre"> </span>// 去掉多余的0
<span style="white-space:pre"> </span>s = s.replaceAll("0+?$", "");
<span style="white-space:pre"> </span>// 如最后一位是.则去掉
<span style="white-space:pre"> </span>s = s.replaceAll("[.]$", "");
}
<span style="white-space:pre"> </span>return s;
}
匹配数字
<span style="white-space:pre"> </span>public static boolean isStandardNum(String num) {
// 正则表达式:匹配非负浮点数(正浮点数 + 0)
Pattern pattern1 = Pattern
.compile("^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0$");
Pattern pattern2 = Pattern.compile("^[1-9]\\d*|0$");
// 正则表达式:匹配非负整数(正整数 + 0)
try {
if (num != null && num.length() != 0) {
Matcher matcher1 = pattern1.matcher(num);
Matcher matcher2 = pattern2.matcher(num);
if (matcher1.matches() || matcher2.matches()) {
return true;
}
}
} catch (Exception e) {
return false;
}
return false;
}