社区
Java EE
帖子详情
急求 !! 正则表达式验证经度纬度
chenpengyu1234
2012-05-03 08:18:31
例如:经度,120.234444 纬度:31:000000
谢谢 小数点后6位。
...全文
2076
14
打赏
收藏
急求 !! 正则表达式验证经度纬度
例如:经度,120.234444 纬度:31:000000 谢谢 小数点后6位。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chenpengyu1234
2012-05-04
打赏
举报
回复
谢谢 ldh911,十分感谢,实在对正则一点都了解。谢谢你的帮助。
huage
2012-05-04
打赏
举报
回复
为什么一定要正侧呢? 经纬度可以用范围值比较吧,
MiceRice
2012-05-04
打赏
举报
回复
呃。。。也要做拆分,不过这个相对简单:
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})";
安特矮油
2012-05-04
打赏
举报
回复
这个应该可以,排除了00.xxx的情况
(-|\\+)?(90.0{4,6}|([1-9]\\d{1}.\\d{4,6}|(\\d{1}.\\d{4,6})))
chenpengyu1234
2012-05-04
打赏
举报
回复
纬度怎么验证?-90 ~+ 90 正则完全不会写,改了半天也改不正确,麻烦你了前辈。
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:
你写的正则如果说是99.8989 false
对,因为你要求小数位数要6位,所以这个肯定是 false
99.898900 这个才是 true
当然你可以自己调整比如:
String reg = "(-|\\+)?(180.0{4,6}|(\\d{1,2}|1([0-7]\\d))\\.\\d{4,6})";
就允许4~6位,超出或少于都错误……
[/Quote]
MiceRice
2012-05-04
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
你写的正则如果说是99.8989 false
[/Quote]
对,因为你要求小数位数要6位,所以这个肯定是 false
99.898900 这个才是 true
当然你可以自己调整比如:
String reg = "(-|\\+)?(180.0{4,6}|(\\d{1,2}|1([0-7]\\d))\\.\\d{4,6})";
就允许4~6位,超出或少于都错误。
chenpengyu1234
2012-05-04
打赏
举报
回复
我自己问题描述的不是很清楚,总之很谢谢。
我的意思是如果验证经度的范围是 -180 ~+180 输入的经度必须在这个范围内,小数点后6位。
你写的正则如果说是99.8989 false
并不是(-|\\+)?(180.000000|(\\d{1,2}|1([0-7]\\d))\\.\\d{6})
[Quote=引用 7 楼 的回复:]
\\d 就是数字,[0-9]
\\d{1,2} 就是1~2位数字
[0-7] 就是只允许01234567这7个字符
正则不支持取值范围的写法,也就是你没法直接写:-180~+180
所以只能约束其组合顺序,拆分为三种情况:
1、3位数且刚好:180;
2、1位数或2位数:随意组合都行;
3、3位数且百位是1,十位是0-7,个位随意。
[/Quote]
MiceRice
2012-05-04
打赏
举报
回复
\\d 就是数字,[0-9]
\\d{1,2} 就是1~2位数字
[0-7] 就是只允许01234567这7个字符
正则不支持取值范围的写法,也就是你没法直接写:-180~+180
所以只能约束其组合顺序,拆分为三种情况:
1、3位数且刚好:180;
2、1位数或2位数:随意组合都行;
3、3位数且百位是1,十位是0-7,个位随意。
chenpengyu1234
2012-05-03
打赏
举报
回复
请教下\\d{1,2}这里是什么意思 ?[0-7]这里也不明白。经度纬度问题第一次遇到,希望你能给我讲解下谢谢。
[Quote=引用 5 楼 的回复:]
引用 4 楼 的回复:
这个有问题,我自己完全不会写正则。
有什么问题?我测试结果是:
String reg = "(-|\\+)?(180.000000|(\\d{1,2}|1([0-7]\\d))\\.\\d{6})";
System.out.println("1.000000".matches(reg)); //true
……
[/Quote]
MiceRice
2012-05-03
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
这个有问题,我自己完全不会写正则。
[/Quote]
有什么问题?我测试结果是:
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
chenpengyu1234
2012-05-03
打赏
举报
回复
这个有问题,我自己完全不会写正则。
MiceRice
2012-05-03
打赏
举报
回复
考虑数值有效性的话,就是取值范围必须限制在: -180~180
就麻烦多了,大致是:
String reg = "(-|\\+)?(180.000000|(\\d{1,2}|1([0-7]\\d))\\.\\d{6})";
if ("120.234444".matches(reg))
chenpengyu1234
2012-05-03
打赏
举报
回复
考虑有效性。谢谢你帮我写下
MiceRice
2012-05-03
打赏
举报
回复
不考虑数值有效性的话,就是:
if (str.matches("\\d{1,3}\\.\\d{6}"))
怎么实现像阿里巴巴右边那个效果,
急求
!谢谢!
我现在需要一个想阿里巴巴右边那个效果的代码,希望高手给一些指导和资料。谢谢了!效果可访问http://www.alibaba.com
ASP问题(
急求
!)
我做的个网站有个页面在进去的时候鼠标事件有错误,但如果是在第二页,鼠标事件又没有错误,请高手指点
急求
一个VB密码输入的
验证
程序编写代码.txt
急求
一个VB密码输入的
验证
程序编写代码.txt
急求
学生会监察部工作计划!.doc
急求
学生会监察部工作计划!.doc
python3 中文乱码与默认编码格式设定方法
急求
!!! (类似于“#coding:gbk”这种就不必来说了。能让import sys print(sys.getdefaultencoding())输出“gbk“的大神请进!!!) python 3和2很大区别就是python本身改为默认用unicode编码。 字符串不再区分...
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章