使用正则表达式验证 GPS 坐标
Validate GPS coordinates with use of regexp
Javascript函数获取一个数组作为参数,这是输入。
var ValidCoordinates = [
"-23, 25",
"4, -3",
"24.53525235, 23.45235",
"04, -23.234235",
"0, 1,2",
"0.342q0832, 1.2324v"
"43.91343345, 143"
];
之后,我们肯定在循环中调用函数:
isValidCoordinates(ValidCoordinates[i])
我创建了一个函数来解决这个问题:
function isValidCoordinates(coordinates){
var args = coordinates.split(",");
var lat = /^(-?[1-8]?'d(?:'.'d{1,18})?|90(?:'.0{1,18})?)$/;
var lon = /^(-?(?:1[0-7]|[1-9])?'d(?:'.'d{1,18})?|180(?:'.0{1,18})?)$/;
//var re = ^[-+]?([1-8]?'d('.'d+)?|90('.0+)?),'s*[-+]?(180('.0+)?|((1[0-7])|([1-9]?'d)('.'d+)?)$;
console.log(args[1]);
if(args[0].match(lat) == true && args[1].match(lon) == true){
return true;
} else{
return false;
}
}
我认为lat
和lon
变量都满足要求,但正则表达式匹配总是失败。 re
是另一个正则表达式,它可能匹配所有两个值。
您的 GPS 值之间有空格,因此,使用以下正则表达式拆分:
var args = coordinates.split(/,'s+/);
's+
匹配一个或多个空格。查看 JS 演示:
var ValidCoordinates = [
"-23, 25",
"4, -3",
"24.53525235, 23.45235",
"04, -23.234235",
"1, 1,2",
"43.91343345, 143"
];
isValidCoordinates(ValidCoordinates[4]);
function isValidCoordinates(coordinates){
var args = coordinates.split(/,'s+/);
var lat = /^(-?[1-8]?'d(?:'.'d{1,18})?|90(?:'.0{1,18})?)$/;
var lon = /^(-?(?:1[0-7]|[1-9])?'d(?:'.'d{1,18})?|180(?:'.0{1,18})?)$/;
console.log("'" + args[0] + "', '" + args[1] + "'");
if(lat.test(args[0].trim()) == true && lon.test(args[1].trim()) == true){
console.log("Yes");
} else{
console.log("No");
}
}
从可理解性的角度来看,我认为解析值并使用数字比较来验证它们更有意义。
var coordsStrings = [
"-23, 25",
"4, -3",
"24.53525235, 23.45235",
"04, -23.234235",
"43.91343345, 143",
"443.91343345, 143",
"r43.91343345, 143"
];
var coordsNumbers = coordsStrings.map(function(coordsString) {
return coordsString
.split(/'s*,'s*/)
.map(function(coordString) {
return Number.parseFloat(coordString);
});
});
// the value of coordsNumbers = [
// [-23, 25]
// [4, -3]
// [24.53525235, 23.45235],
// [4, -23.234235],
// [43.91343345, 143]
// ];
// and then your validate logic
//Latitude = -90 -- +90
//Longitude = -180 -- +180
var isValid = function(coordNumbers) {
var lat = coordNumbers[0];
var lng = coordNumbers[1];
return lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180;
};
for (var i = 0; i < coordsNumbers.length; i++) {
var v = isValid(coordsNumbers[i]);
/*...*/
document.write(coordsNumbers[i][0] + ', ' + coordsNumbers[i][1] + ' is ' + (v ? 'valid':'<strong>invalid</strong>')+'</br>');
}
相关文章:
- 从硬件GPS获取坐标
- 计算两个GPS坐标之间的指南针方位的问题
- 将地址地理编码为 GPS 坐标
- 在科尔多瓦地理位置中访问模拟蓝牙GPS坐标
- 使用 GPS 坐标修改地图的中心
- 将 GPS 坐标转换为距离,并以十进制度为单位将距离转换为半径
- 从 javascript 中的 GPS 坐标凹船体
- 我可以从网站上读取“真实”的移动GPS坐标吗?
- 无法在Android中使用Javascript webview获取GPS坐标
- 获取谷歌地图的gps坐标
- 谷歌地图(javascript API):从地址获取GPS坐标
- 更新基于gps坐标的谷歌地图位置
- 用n个gps坐标测量面积
- HTML5地理定位将当前GPS位置的长宽坐标转换为一个变量
- Openlayers WKT返回太大的gps坐标
- 反向地理编码:将GPS坐标转换为位置名称的函数调用永远不会执行
- 如何在登录网站时从黑莓手机获取GPS坐标
- 从城市表中获取2个gps坐标之间的路线点
- 使用正则表达式验证 GPS 坐标
- 如何在使用街景api时获得放大窗格的gps坐标?