Регулярное выражение для широты и долготы с формой DDMMSSX

Вопрос: Это выражение регулярного выражения для широты и долготы, выраженное как DDMMSS, где D для градусов, M - минуты, S - секунды, а X - буква, указывающая север (N), юг, восток или запад? Например, для широты 60 градусов, 20 минут, 15 секунд на север, это будет 602015N, а для долготы 40 градусов, 50 минут, 0

Вопрос:

Это выражение регулярного выражения для широты и долготы, выраженное как DDMMSS, где D для градусов, M – минуты, S – секунды, а X – буква, указывающая север (N), юг, восток или запад?

Например, для широты 60 градусов, 20 минут, 15 секунд на север, это будет 602015N, а для долготы 40 градусов, 50 минут, 0 секунд на запад, это будет 0405000 Вт. (Обратите внимание, что широта всегда имеет 6 цифр, а долгота всегда имеет 7 цифр).

Кроме того, учитывая, что минуты и секунды должны быть между 00 и 59, а градусы должны быть между 0 и 90 (для широты) и между 0 и 180 (для долготы).

Лучший ответ:

Попробуйте эти два регулярных выражения:

широта

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

Демоверсия Debuggex

долгота

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

Демоверсия Debuggex

Nota:
Не забудьте выйти в код 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… } Ответ №1

Редактировать:

Следующий способ контроля Stackoverflow должен помочь вам…

Графики минут секунд (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}$

Оцените статью
Добавить комментарий