保留两位有效数字的正小数(可无小数部分)在网上搜了很多答案,发现普遍存在一个问题。
例如:[0-9]+(.[0-9][0-9]?)?以上表达式有一个问题,就是不能正确验证整数部分开头为零的情况。
比如:010.34,0000023,0000.00正常情况下,除非这个数的整数部分值为零,否则不可能出现开头为零的情况。
这个正则表达式怎么写?

解决方案 »

  1.   

    import java.util.regex.Matcher;
    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
      

  2.   

    上面2楼的正则写的大意了换成这个
    String regex="\\d+\\.\\d{0,2}";
    匹配两位小数,可以没有小数或者一位
      

  3.   

    import java.util.regex.Matcher;
    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