繁体   English   中英

使用 Javascript 验证街道地址

[英]Street Address validation using Javascript

我正在做街道地址验证,在街道地址验证文本字段中应该允许所有字符和特殊字符。

为了允许所有特殊字符,我使用了以下方式。 有没有更好的方法来允许所有特殊字符?

function isAcceptedChar_StAddress(s)
{
    if (s == ',' || s == '#' || s == '-' || s == '/' || s == " " ||  
    s == '!' || s == '@' || s == '$' || s == "%" ||  s == '^' || 
    s == '*' || s == '(' || s == ")" || s == "{" ||  s == '}' || 
    s == '|' || s == '[' || s == "]"  || s == "\\")
    {
        return true;
    }
    else
    {
        return false;
    }
}

在上面的代码中,我比较每个字符是否匹配我返回true,否则返回false

地址验证是一个非常棘手的主题,有很多问题。 例如,在美国,您可以轻松获得带有破折号“-”和斜线“/”字符的地址。 例如: 123-A 大街 这里的“-A”通常表示公寓号。

此外,您可以为街道和公寓使用分数,如“4567 40 1/2 Road”,其中街道名称为“40 1/2 Road”,因此不能排除使用斜杠字符。

英镑/哈希“#”字符通常用作公寓级别指示符。 例如,您可以使用“#409”而不是使用 Suite 409(通常写为 STE 409)。

所有这一切都必须提出一个更大的问题:最终目标是什么? 你想看看地址是否真实? 或者你想看看地址是否真的存在?

有许多第三方解决方案可用于查看地址是否真实,例如 ServerObjects、Melissa Data 和 SmartyStreets。 提供完整 Javascript 集成的甚至更少。 SmartyStreets 提供了一个 Javascript 实现,您可以轻松地将其插入您的网站。 它被称为LiveAddress

为了充分披露,我是 SmartyStreets 的创始人,如果您最终使用地址验证系统,我很想听听您的想法。 你可以在 Twitter 上以 jonathan_oliver 的名义联系我。

如果您想要一个功能,请尝试:

function validCharForStreetAddress(c) {
    return ",#-/ !@$%^*(){}|[]\\".indexOf(c) >= 0;
}

为什么不改用正则表达式

var regex = /[,#-\/\s\!\@\$.....]/gi; // ... add all the characters you need
if (regex.test(s)) {
  return true;
}
return false;
var illegalChars = [',', '#', '-', '/', " ",  
    '!', '@', '$', "%",  '^', 
    '*', '(', ")", "{",  '}', 
    '|', '[', "]" , "\\"];

function isAcceptedChar_StAddress(s) {
    for(var i = 0; i < illegalChars.length; i++) {
        if(s == illegalChars[i]) return true;
    }
    return false;
}

或者,使用 jQuery:

function isAcceptedChar_StAddress(s) {
    return $.inArray(s, illegalChars) != -1;
}

注意:您可能希望对数组进行排序并进行二分查找。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM