使用Javascript验证街道地址

时间:2011-07-27 05:12:19

标签: 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

4 个答案:

答案 0 :(得分:9)

地址验证是一个非常棘手的主题,有很多陷阱。例如,在美国,您可以轻松地使用短划线“ - ”和斜杠“/”字符。例如: 123-A Main Street 。这里“-A”通常表示公寓号码。

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

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

在所有这些问题中都必须提出一个更大的问题:最终目标是什么?您是否正在尝试查看地址是否是真实的?或者您想查看地址是否确实存在?

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

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

答案 1 :(得分:3)

为什么不使用正则表达式

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

答案 2 :(得分:3)

如果你想要一个这样的功能,试试:

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

答案 3 :(得分:0)

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;
}

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