保留两位有效数字的正小数(可无小数部分)在网上搜了很多答案,发现普遍存在一个问题。
例如:[0-9]+(.[0-9][0-9]?)?以上表达式有一个问题,就是不能正确验证整数部分开头为零的情况。
比如:010.34,0000023,0000.00正常情况下,除非这个数的整数部分值为零,否则不可能出现开头为零的情况。
这个正则表达式怎么写?
例如:[0-9]+(.[0-9][0-9]?)?以上表达式有一个问题,就是不能正确验证整数部分开头为零的情况。
比如:010.34,0000023,0000.00正常情况下,除非这个数的整数部分值为零,否则不可能出现开头为零的情况。
这个正则表达式怎么写?
import java.util.regex.Pattern;public class NumReg {
public static void main(String[] args){
String str="012.34";
String regex="\\d+\\.\\d{2}?";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group());
}
}
}
测试结果:012.34
String regex="\\d+\\.\\d{0,2}";
匹配两位小数,可以没有小数或者一位
import java.util.regex.Pattern;public class NumReg {
public static void main(String[] args){
String[] str="0.3 000312.12 0123.123".split(" ");
String regex="(?<=^0*(?=[1-9]*0?\\.))\\d+?\\.\\d{0,2}";
Pattern p=Pattern.compile(regex);
for(String s:str){
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(s+"-->"+m.group());
}
}
}
}测试结果:0.3-->0.3
000312.12-->312.12
0123.123-->123.12