String patternLongitude1 ="/^((\\d|[1-9]\\d|1[0-7]\\d)[°](\\d|[0-5]\\d)[′](\\d|[0-5]\\d)(\\.\\d{1,2})?[\\″]?[E]|[W]$)|(180[°]0[′]0[\\″]?[E]|[W]$)/";String patternLongitude2 = "/^[EW]?((\\d|[1-9]\\d|1[0-7]\\d)[\\s\\-,;°度](\\d|[0-5]\\d)[\\s\\-,;′分](\\d|[0-5]\\d)(\\.\\d{1,2})?[\\s\\-,;\"秒]?$)|(180[\\s\\-,;°度]0[\\s\\-,;′分]0[\\s\\-,;\"秒]?$)/";String patternLatitude1 ="/^((\\d|[1-8]\\d)[°](\\d|[0-5]\\d)[′](\\d|[0-5]\\d)(\\.\\d{1,2})?[\\″]?[N]|[S]$)|(90[°]0[′]0[\\″]?[N]|[S]$)/";
String patternLatitude2 = "/^[NS]?((\\d|[1-8]\\d)[\\s\\-,;°度](\\d|[0-5]\\d)[\\s\\-,;′分](\\d|[0-5]\\d)(\\.\\d{1,2})?[\\s\\-,;\"秒]?$)|(90[\\s\\-,;°度]0[\\s\\-,;′分]0[\\s\\-,;\"秒]?$)/";在网上找了两组经纬度的正则表达式。
从前台取得经纬度字符串,如:String LONGITUDE=“100°20′30″”;
为何LONGITUDE.matches(patternLongitude)匹配结果总是为false呢?
String patternLatitude2 = "/^[NS]?((\\d|[1-8]\\d)[\\s\\-,;°度](\\d|[0-5]\\d)[\\s\\-,;′分](\\d|[0-5]\\d)(\\.\\d{1,2})?[\\s\\-,;\"秒]?$)|(90[\\s\\-,;°度]0[\\s\\-,;′分]0[\\s\\-,;\"秒]?$)/";在网上找了两组经纬度的正则表达式。
从前台取得经纬度字符串,如:String LONGITUDE=“100°20′30″”;
为何LONGITUDE.matches(patternLongitude)匹配结果总是为false呢?
把正则表达式的 /^ 改成 ^ 应该可以的
不知道你想要什么格式的,如果不考虑数值限制,简单一点就可以了
String patternLongitude = "^[EW]?[-]?\\d+[°度](\\s?\\d+[′分](\\s?\\d+[″秒]))?$";
String patternLatitude = "^[EW]?[-]?\\d+[°度](\\s?\\d+[′分](\\s?\\d+[″秒]))?$";
String LONGITUDE="100°20′30″";
System.out.println(LONGITUDE.matches(patternLongitude));
String patternLatitude = "^[NS]?[-]?\\d+[°度](\\s?\\d+[′分](\\s?\\d+[″秒])?)?$";
String LONGITUDE="100°20′30″";
System.out.println(LONGITUDE.matches(patternLongitude));