You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS经纬度正则表达式验证报错,请求排查问题原因

经纬度正则问题排查与修复

首先看你提供的正则表达式明显不完整(结尾的((1[0-7]...没有闭合),这肯定会导致语法错误。咱们一步步梳理问题,同时给出完整的修复方案:

核心问题点

  • 正则语法不合法:你写的正则没有完成括号闭合和规则补充,直接运行会抛出正则语法异常,这是最直接的错误。
  • 规则覆盖不全:就算写完现有片段,也可能没覆盖经纬度的所有合法范围(比如纬度0值、经度0-90度的情况、小数位数的合理匹配等)。

修复后的完整Angular代码

var app = angular.module('myapp', []);
app.controller('latlong', function($scope) {
    $scope.name = "Validation"; // 修正了你原代码里的拼写错误:Valiadtion → Validation
    $scope.lat = "latitude";
    $scope.long = "longitude";
    $scope.submit = function() {
        var inputLatLong = $scope.lati; // 假设这是用户输入的经纬度字符串,格式如"40.7128, -74.0060"
        // 完整经纬度正则:匹配-90~90的纬度、-180~180的经度,支持正负号、可选小数、逗号分隔
        var reg = /^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$/;
        if(reg.test(inputLatLong)){
            alert("经纬度格式正确!");
        } else {
            alert("经纬度格式错误,请检查:需符合「纬度, 经度」格式,范围为纬度-90~90,经度-180~180");
        }
    };
});

正则规则拆解说明

  • 纬度匹配:[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?)
    • 支持可选正负号,匹配0-89度(带任意小数位),或者精确的90.0...(不能超过90)
  • 经度匹配:[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)
    • 支持可选正负号,匹配0-179度(带任意小数位),或者精确的180.0...(不能超过180)
  • 中间用逗号分隔,经度前允许任意空白字符(\s*),兼容用户输入时的空格习惯

内容的提问来源于stack exchange,提问作者SRK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:35:28