如何在jQuery中验证纬度、经度和电子邮件地址

3

我正在创建一个纬度和经度的验证。

目前这是我的jQuery脚本:

var latlngVal = /^(-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,6}),{1}(-?([1]?[1-7][1-9]|[1]?[1-8][0]|[1-9]?[0-9])\.{1}\d{1,6})/;
var latlng = $("input#latlng").val();
var invalid_latlng = 'Latitude and Longitude are not correctly typed';

// Validate Latitude and Longitude
if(!latlngVal.test(latlng)) {

    // ERROR

    $("#error").html(invalid_latlng);
    return false;;
};

Google的输出可能是这样的:63.548552,-127.529297。

我正在向他们展示如何直接从Google复制纬度和经度,并将其与视频一起使用。但不知何故,验证仍然显示输入的纬度和经度是错误的。

我想知道我的var latlngVal是否正确。

然后我也在运行这个脚本,但似乎也不起作用:

var emailVal = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var email = $("input#email").val();
var invalid_email = 'Please type a valid e-mail address';

// If e-mail address is not empty - validate
if (!email == '') {
    if(!emailVal.test(email)) {

        // ERROR - customize

        $('#error').html(invalid_email);
        return false;
    }
};

这里的问题在于它似乎没有检查电子邮件是否为空,所以如果这里还有什么不对的地方,请告诉我。如果用户没有输入电子邮件地址,我就不想验证电子邮件。

1个回答

8

我帮您修改了代码。

我将您的正则表达式改为:

/^-?([0-8]?[0-9]|90)\.[0-9]{1,6},-?((1?[0-7]?|[0-9]?)[0-9]|180)\.[0-9]{1,6}$/;

这段内容涉及到IT技术,它是关于地理坐标和电子邮件验证的。它验证了纬度范围在-90.XXXXXX90.XXXXXX,经度范围在-180.XXXXXX180.XXXXXX之间。

例如:-85.123456,-100.123456

如果要检查电子邮件是否为空,请使用以下方法:

if (email.length !== 0) {

演示 http://jsfiddle.net/nRha8/2/


@void:你的代码显示“7.712006399720735,80.6446103515625”,这是错误的纬度和经度! - Gowri
@Philip Jens Bramsted,您能在这里留下可用的代码吗?您标记为答案的那个对于所有有效输入都无效。 - Anish Karunakaran
请注意,正则表达式在逗号后面不包括空格。-12.123456,150.123456 可以工作,但 -12.123456, 150.123456 不行。 - Corfitz.
2
@AnishKarunakaran 你可以将正则表达式更改为以下形式:/^-?([0-8]?[0-9]|90)\.[0-9]{1,6},[" "]?-?((1?[0-7]?|[0-9]?)[0-9]|180)\.[0-9]{1,6}$/,这样就可以支持逗号后跟有或没有空格。 - Corfitz.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接