2013-02-20 52 views
2

我一直在嘗試驗證正確的座標格式。目前我想保存座標。但是當格式錯誤時,標記不會出現在我的地圖上。使用REGEX驗證正確的座標格式

這是我的一些示例代碼。

String latlon = "3.169054, 101.714108"; 
     String regex_coords = "/\\((\\-?\\d+\\.\\d+), (\\-?\\d+\\.\\d+)\\)/"; 
     Pattern compiledPattern2 = Pattern.compile(regex_coords, Pattern.CASE_INSENSITIVE); 
     Matcher matcher2 = compiledPattern2.matcher(latlon); 
     while (matcher2.find()) { 
      System.out.println("Is Valid Map Coordinate: " + matcher2.group()); 
     } 

我希望用戶能夠使用逗號僅保存這種格式「3.169054,101.714108」。

任何人都可以幫助我構建正則表達式來驗證這種格式嗎?

感謝所有

+0

小數位數是否始終爲6? – sp00m 2013-02-20 10:13:14

回答

7

這應該爲你工作:

([+-]?\d+\.?\d+)\s*,\s*([+-]?\d+\.?\d+) 

在線RegexPlanet演示:http://fiddle.re/20pm

這允許任何座標是一個數字,其任選+-開始。數字可以是整數或雙精度(但如果存在的話,點必須包含數字)。

最後,您可以獲取緯度和經度作爲group1和group2。

+0

謝謝!這一個很好用。 – aishul 2013-02-21 02:03:20

+0

這一個是越野車,並沒有檢查範圍-90至90和-180至180. – Sategroup 2016-04-28 05:08:25

+0

@Sategroup:正則表達式不正確的工具來檢查數字範圍。這僅用於從文本中提取座標以進行進一步處理和驗證,但它不是也不可能是100%正確性驗證工具。 – mvp 2016-04-28 05:11:47