例如:经度,120.234444 纬度:31:000000谢谢 小数点后6位。

解决方案 »

  1.   

    不考虑数值有效性的话,就是:
    if (str.matches("\\d{1,3}\\.\\d{6}")) 
      

  2.   

    考虑数值有效性的话,就是取值范围必须限制在: -180~180就麻烦多了,大致是:
    String reg = "(-|\\+)?(180.000000|(\\d{1,2}|1([0-7]\\d))\\.\\d{6})";if ("120.234444".matches(reg))
      

  3.   


    有什么问题?我测试结果是:        String reg = "(-|\\+)?(180.000000|(\\d{1,2}|1([0-7]\\d))\\.\\d{6})";
            System.out.println("1.000000".matches(reg)); //true
            System.out.println("20.000000".matches(reg)); //true 
            System.out.println("-20.000000".matches(reg)); //true 
            System.out.println("120.234444".matches(reg)); //true 
            System.out.println("-180.000000".matches(reg)); //true 
            System.out.println("180.000000".matches(reg)); //true 
            System.out.println("180.000001".matches(reg)); //false 
            System.out.println("1.00000".matches(reg)); //false
            System.out.println("1.0000000".matches(reg)); //false
      

  4.   

    我自己问题描述的不是很清楚,总之很谢谢。
    我的意思是如果验证经度的范围是 -180 ~+180 输入的经度必须在这个范围内,小数点后6位。
    你写的正则如果说是99.8989  false 
    并不是(-|\\+)?(180.000000|(\\d{1,2}|1([0-7]\\d))\\.\\d{6}) 
      

  5.   


    对,因为你要求小数位数要6位,所以这个肯定是 false99.898900 这个才是 true当然你可以自己调整比如:
    String reg = "(-|\\+)?(180.0{4,6}|(\\d{1,2}|1([0-7]\\d))\\.\\d{4,6})";
    就允许4~6位,超出或少于都错误。
      

  6.   

    这个应该可以,排除了00.xxx的情况
    (-|\\+)?(90.0{4,6}|([1-9]\\d{1}.\\d{4,6}|(\\d{1}.\\d{4,6})))
      

  7.   

    呃也要做拆分,不过这个相对简单:
    String regWD = "(-|\\+)?(90\\.0{4,6}|(\\d|[1-8]\\d)\\.\\d{4,6})";
    对了,之前那个,有个地方写错了,漏了关于小数点的转义,修改下:
    String regJD = "(-|\\+)?(180\\.0{4,6}|(\\d{1,2}|1([0-7]\\d))\\.\\d{4,6})";
      

  8.   

    谢谢 ldh911,十分感谢,实在对正则一点都了解。谢谢你的帮助。