使用Javascript进行街道地址验证

使用Javascript进行街道地址验证,javascript,Javascript,我正在做一个街道地址验证,在stret地址验证文本字段中应该允许所有字符和特殊字符 为了允许所有特殊字符,我使用了以下方法。 是否有更好的方法允许所有特殊字符? function isAcceptedChar_StAddress(s) { if (s == ',' || s == '#' || s == '-' || s == '/' || s == " " || s == '!' || s == '@' || s == '$' || s == "%" || s == '^

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

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

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

为什么不改用正则表达式呢

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

注意:您可能需要对数组进行排序并进行二进制搜索。

如果需要此函数,请尝试:

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

地址验证是一个非常棘手的问题,有很多陷阱。例如,在美国,您可以很容易地使用带破折号“-”和斜杠“/”字符的地址。例如:123-A大街。此处“-A”通常表示公寓编号

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

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

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

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


为了充分披露,我是SmartyStreets的创始人,如果你最终使用地址验证系统,我很想听听你的想法。你可以在推特上以乔纳森·奥利弗的名字联系我。

+1有很多类似的方式,这一种和任何一种都一样好。字符串方法非常快,因为使用indexOf的字符串版本速度更快。不需要g标志。也可以
返回regex.test为什么不直接执行
if(illegalChars.search)>-1)
而不是for循环?
function isAcceptedChar_StAddress(s) {
    return $.inArray(s, illegalChars) != -1;
}
function validCharForStreetAddress(c) {
    return ",#-/ !@$%^*(){}|[]\\".indexOf(c) >= 0;
}