經緯度正則表達式詳解

一、什麼是經緯度

經度和緯度是描述地球表面位置的坐標系,是地球表面的橫縱坐標,用於確定某個具體的地理位置。

經度是以本初子午線為基礎,東西兩邊各180度。東經0度是本初子午線,向東經度遞增,向西逆序遞減,例如,東經120度,表示該地位於本初子午線以東120度的地方。

緯度是以赤道為基礎,南北兩邊各90度。赤道是0度,向北緯度遞增,向南逆序遞減,例如,北緯30度,表示該地位於赤道以北30度的地方。

二、經緯度的格式

經緯度的格式有多種,最常用的格式有以下幾種:

  1. 度、分、秒(符號+數字)
  2. 度十進位(符號+數字)
  3. 地球坐標系(符號+數字)

三、經緯度的正則表達式

利用正則表達式可以判斷輸入是否符合經緯度格式。以下是常用的經緯度正則表達式:

1、度、分、秒(符號+數字):
/^[+-]?((0?[1-9]|[1-8]\d|90)°([1-5]?\d′([1-5]?\d″)?)?|(0?[1-9]|[1-8]\d|90)°(0?\d′(0?\d″)?)) [+-]?((0?[1-9]|[1-9]\d|1[0-7]\d|180)°([1-5]?\d′([1-5]?\d″)?)?|(0?[1-9]|[1-9]\d|1[0-7]\d|180)°(0?\d′(0?\d″)?))$/

2、度十進位(符號+數字):
/^[+-]?(0?\d{1,2}(\.\d+)?|1[0-7]?\d{1}(\.\d+)?|180(\.0+)?)[°] [+-]?(0?\d{1,2}(\.\d+)?|[1-8]?\d{1}(\.\d+)?|90(\.0+)?)°$/

3、地球坐標系(符號+數字)
/^[+-]?(0?\d{1,2}(\.\d+)?|1[0-7]?\d{1}(\.\d+)?|180(\.0+)?),[+-]?(0?\d{1,2}(\.\d+)?|[1-8]?\d{1}(\.\d+)?|90(\.0+)?)$/

四、經緯度正則表達式解析

1、度、分、秒(符號+數字)

該正則表達式與度、分、秒(符號+數字)格式的經緯度相匹配,如「37°22′40.5″N122°05′06.5″E」。

解析:

  • ^[+-]?:以可選的符號開頭,即字元串可以是正數、負數或不帶符號。
  • ((0?[1-9]|[1-8]\d|90)°:1到2位數,且不能以0開頭,或者以1~8開頭的兩位數,或者是90。
  • ([1-5]?\d′([1-5]?\d″)?)?:0到2個數字表示分鐘,單引號是分隔符,如果有分鐘,之後可能有0到2個數字表示秒,秒用雙引號分隔。
  • |:或
  • (0?[1-9]|[1-8]\d|90)°(0?\d′(0?\d″)?):即45°00′
  • [+-]?((0?[1-9]|[1-9]\d|1[0-7]\d|180)°([1-5]?\d′([1-5]?\d″)?)?|(0?[1-9]|[1-9]\d|1[0-7]\d|180)°(0?\d′(0?\d″)?))$:以可選符號結尾,即字元串可以是正數、負數或不帶符號。

2、度十進位(符號+數字)

該正則表達式與度十進位(符號 + 數字)格式的經緯度相匹配,如「37.3775°N122.057°E」。

解析:

  • ^[+-]?:以可選符號開頭,即字元串可以是正數、負數或不帶符號。
  • (0?\d{1,2}(\.\d+)?):1到3位數,可以是以0開頭的1到2位數或以1到9開頭的兩位數或三位數,中間可以是一個小數點以及1位或多位的數字。
  • |:或
  • (1[0-7]?\d{1}(\.\d+)?):以1開頭,後面可以是一位或兩位數字,最大值不能超過179,中間可以是一個小數點以及1位或多位的數字。
  • |:或
  • (180(\.0+)?))°:以180結尾,中間可以是一個小數點加0或多個0。
  • [ ]:一個空格
  • [+-]?(0?\d{1,2}(\.\d+)?|[1-8]?\d{1}(\.\d+)?|90(\.0+)?)°$:以可選符號結尾,即字元串可以是正數、負數或不帶符號。

3、地球坐標系(符號+數字)

該正則表達式與地球坐標系(符號+數字)格式的經緯度相匹配,如「37.3775,122.057」。

解析:

  • ^[+-]?:以可選符號開頭,即字元串可以是正數、負數或不帶符號。
  • (0?\d{1,2}(\.\d+)?):與度十進位的解析類似。
  • |:或
  • (1[0-7]?\d{1}(\.\d+)?):與度十進位的解析類似。
  • |:或
  • (180(\.0+)?))°:與度十進位的解析類似。
  • ,:逗號
  • [+-]?(0?\d{1,2}(\.\d+)?|[1-8]?\d{1}(\.\d+)?|90(\.0+)?)$:以可選符號結尾,即字元串可以是正數、負數或不帶符號。

五、使用示例

以下是使用JavaScript實現檢驗經緯度是否符合格式的示例代碼:

function isLatitude(input) {
  // 精確到小數點後6位
  const regex = /^[+-]?(0?\d{1,2}(\.\d{1,6})?|1[0-7]?\d{1}(\.\d{1,6})?|180(\.0{1,6})?)°$/;
  return regex.test(input);
}

function isLongitude(input) {
  // 精確到小數點後6位
  const regex = /^[+-]?((0?\d|[1-9]\d|1[0-7]\d)(\.\d{1,6})?|180(\.0{1,6})?)°$/;
  return regex.test(input);
}

// 使用示例
console.log(isLatitude("37.3775°N")); // true
console.log(isLatitude("-90°")); // true
console.log(isLatitude("91.12345678°E")); // false
console.log(isLongitude("122°E")); // false
console.log(isLongitude("122.057°E")); // true

原創文章,作者:XCLHH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332262.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XCLHH的頭像XCLHH
上一篇 2025-01-21 17:30
下一篇 2025-01-21 17:30

相關推薦

  • Python正則表達式search()和match()有什麼區別?

    search()和match()都是Python中的正則表達式函數,它們的作用都是在一個字元串中搜索匹配正則表達式的位置,但它們有著不同的使用場景和返回結果。 一、search()…

    編程 2025-04-29
  • MySQL正則表達式替換

    MySQL正則表達式替換是指通過正則表達式對MySQL中的字元串進行替換。在文本處理方面,正則表達式是一種強大的工具,可以方便快捷地進行字元串處理和匹配。在MySQL中,可以使用正…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論