使用正则表达式验证经纬度的范围
经度范围:-180~180
纬度范围:-90~90
正则表达式:
正则来源:https://blog.csdn.net/dapyandxpy/article/details/79303509
经度:
^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,6})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$
纬度:
^(\-|\+)?([0-8]?\d{1}\.\d{0,6}|90\.0{0,6}|[0-8]?\d{1}|90)$
现在经纬度范围只支持小数点后六位,超出六位就不通过,通过修改正则表达式中的{0,6}中的6来确定小数点后保留几位。也可以通过直接修改{0,6}为+不限制小数点后几位
如:^(\-|\+)?([0-8]?\d{1}\.\d+|90\.0+|[0-8]?\d{1}|90)$(这个正则就随便测试了一些经纬度,如果不正确,欢迎大家指正)。
在线测试正则:http://tool.oschina.net/regex/
input输入框
//经度
<input type="text" onkeyup="if(!/^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,6})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/.test(this.value)){alert('经度范围:-180~180(只支持保留小数点后六位)');this.value='';}" />
//纬度
<input type="text" onkeyup="if(!/^(\-|\+)?([0-8]?\d{1}\.\d{0,6}|90\.0{0,6}|[0-8]?\d{1}|90)$/.test(this.value)){alert('纬度范围:-90~90(只支持保留小数点后六位)');this.value='';}" />
java后台正则验证方法
package com.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringUtil {
//经度范围:-180~180(只支持保留小数点后六位)
public static String lonreg = "^(\\-|\\+)?(((\\d|[1-9]\\d|1[0-7]\\d|0{1,3})\\.\\d{0,6})|(\\d|[1-9]\\d|1[0-7]\\d|0{1,3})|180\\.0{0,6}|180)$";
//纬度范围:-90~90(只支持保留小数点后六位)
public static String latreg = "^(\\-|\\+)?([0-8]?\\d{1}\\.\\d{0,6}|90\\.0{0,6}|[0-8]?\\d{1}|90)$";
/**
* 判断是否与给定字符串样式匹配
*
* @param str 字符串
* @param pattern 正则表达式样式
* @return 是否匹配 是true,否false
*/
public static boolean isMatch(String str, String pattern) {
Pattern pattern_hand = Pattern.compile(pattern);
Matcher matcher_hand = pattern_hand.matcher(str);
boolean b = matcher_hand.matches();
return b;
}
}