表示为DDMMSS的纬度和经度的正则表达式,其中D表示度,M表示分钟,S表示秒,X表示北(N),南,东或西?< / p>
例如,对于北纬60度,20分钟,15秒,它将 602015N , 而对于经度为40度,50分钟,0秒的西经,它将 0405000W 。 (请注意,纬度始终为6位数,经度始终为7位数。)
另外,请记住,分钟和秒必须介于00和59之间,度必须介于0到90之间(纬度)和0到180之间(经度)。
答案 0 :(得分:4)
尝试这两个正则表达式:
<强>纬度强>
(?:[0-8]\d|90)(?:[0-5]\d)(?:[0-5]\d)[NS]
<强>经度强>
(?:0\d{2}|1[0-7]\d|180)(?:[0-5]\d)(?:[0-5]\d)[EW]
<强>诺塔:强>
不要忘记在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}$