[英]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.