哪个是表示为 DDMMSS 的纬度和经度的正则表达式,其中 D 表示度数,M 表示分钟,S 表示秒,X 是表示北 (N)、南、东或西的字母?
例如,对于北纬 60 度 20 分 15 秒,它将是602015N,对于西经 40 度 50 分 0 秒,它将是0405000W。(请注意,纬度始终为 6 位,经度始终为 7 位)。
此外,请记住分钟和秒必须介于 00 和 59 之间,度数必须介于 0 和 90(纬度)和 0 和 180(经度)之间。
哪个是表示为 DDMMSS 的纬度和经度的正则表达式,其中 D 表示度数,M 表示分钟,S 表示秒,X 是表示北 (N)、南、东或西的字母?
例如,对于北纬 60 度 20 分 15 秒,它将是602015N,对于西经 40 度 50 分 0 秒,它将是0405000W。(请注意,纬度始终为 6 位,经度始终为 7 位)。
此外,请记住分钟和秒必须介于 00 和 59 之间,度数必须介于 0 和 90(纬度)和 0 和 180(经度)之间。
试试这两个正则表达式:
纬度
(?:[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) 可以小写,则可以使用忽略大小写标志。
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...
}
编辑:
以下 Stackoverflow QA 应该可以帮助您...
^\s*([+-]?\d{1,3}\*?\s+\d{1,2}'?\s+\d{1,2}"?[NSEW]?|\d{1,3}(:\d{2}){2}\.\d[NSEW]\s*){1,2}$