经度和经度的正则表达式,形式为DDMMSSX

时间:2013-11-07 15:23:24

标签: regex

表示为DDMMSS的纬度和经度的正则表达式,其中D表示度,M表示分钟,S表示秒,X表示北(N),南,东或西?< / p>

例如,对于北纬60度,20分钟,15秒,它将 602015N , 而对于经度为40度,50分钟,0秒的西经,它将 0405000W 。 (请注意,纬度始终为6位数,经度始终为7位数。)

另外,请记住,分钟和秒必须介于00和59之间,度必须介于0到90之间(纬度)和0到180之间(经度)。

2 个答案:

答案 0 :(得分:4)

尝试这两个正则表达式:

<强>纬度

(?:[0-8]\d|90)(?:[0-5]\d)(?:[0-5]\d)[NS]

Regular expression visualization

Debuggex Demo


<强>经度

(?:0\d{2}|1[0-7]\d|180)(?:[0-5]\d)(?:[0-5]\d)[EW]

Regular expression visualization

Debuggex Demo

<强>诺塔:
不要忘记在java代码中转义\,如果字母(NSEW)可以是小写,则可以使用ignore case标志。

 String latitude=...
 final String LATITUDE_REGEX = "(?:[0-8]\\d|90)(?:[0-5]\\d)(?:[0-5]\\d)[NS]";
 // the same regex with ignore case flag activated
 // final String LATITUDE_REGEX = "(?i)(?:[0-8]\\d|90)(?:[0-5]\\d)(?:[0-5]\\d)[NS]"; 

 if (latitude.matches(LATITUDE_REGEX)) {
     // We have a latitude ...
 } else {
     // This is not a latitude...
 }

答案 1 :(得分:0)

编辑:

以下Stackoverflow QA应该可以帮助您......

Degrees Minutes Seconds (DMS) RegEx

^\s*([+-]?\d{1,3}\*?\s+\d{1,2}'?\s+\d{1,2}"?[NSEW]?|\d{1,3}(:\d{2}){2}\.\d[NSEW]\s*){1,2}$