我知道至少有十几个问题。我正在尝试使用Regex对街道地址的输入进行简单验证,我在输入条目中检查至少两个空格。原因?在大多数情况下,我们的地址至少有3个部分,街道号码,街道名称,类型(车道,车道,大街,街道等)
我想提醒用户,如果条目至少不匹配,如果它有三个以上的空格,这意味着它在地址中有更多的名称,这很好,但是最小的不符合需要警报。我的最新努力在下面,并且无法正常工作。
var addregex = new RegExp("^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^\d{1,6}\040([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$");
if (addregex.test($(this).val())) {
alert('is valid');
address.addClass('isvalid');
address.css("border", "1px solid lightgray");
} else {
address.css("border", "2px solid red");
alert("Are you sure this is a valid street address?");
address.focus();
}
答案 0 :(得分:7)
您只需要一个简单的测试:/^\s*\S+(?:\s+\S+){2}/
答案 1 :(得分:1)
\w+(\s\w+){2,}
描述:
\w+
=>字母数字,一个或多个复制品\s
=>空白(\s\w+)
=>编号的捕获组[\ s \ w +] {2,}
=>至少2次重复答案 2 :(得分:1)
基于ClasG的答案改进版本。
/\d+(\s+\w+){1,}\s+(?:st(?:\.|reet)?|dr(?:\.|ive)?|pl(?:\.|ace)?|ave(?:\.|nue)?|rd|road|lane|drive|way|court|plaza|square|run|parkway|point|pike|square|driveway|trace|park|terrace|blvd)/
答案 3 :(得分:0)
为什么不呢?......
var address="123 Something Street";
if (address.split(" ").length>2) {
alert("valid");
} else {
alert("invalid");
}
答案 4 :(得分:0)
你在这里有一些可行的建议。但是,我想为你提供一个正则表达式,我认为你所要求的是:
\d+\s+\w+\s+\w+
或者,如果只是警告,您甚至可以添加您指定的“类型”测试,例如:
\d+\s+\w+\s+(?:st(?:\.|reet)?|ave(?:\.|nue)?|lane|dr(?:\.|ive)?)
允许使用或不使用句号的缩写版本。 (随意添加道路,法院等)
在regex101处查看。
希望这有帮助,
此致
编辑:请记住为不区分大小写添加标记。 ;)
答案 5 :(得分:0)
由于某种原因,我无法让其他人工作,但是这个人验证了我所提出的所有街道地址......
var value = '12136 Test This Road';
var streetAddRegEx = RegExp('/\d{1,}(\s{1}\w{1,})(\s{1}?\w{1,})+)/g');
streetAddRegEx.test(value);
基本上我是这样做的,所以它是任何一组单词,然后是一组数字......
答案 6 :(得分:0)
^(?!\s*$)^((?!([p|P][-. ]?[o|O].?[- ]?|post office )[b|B]([ox|OX]))(?!(\`|\~|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\+|\=|\[|\{|\]|\}|\||\\|\'|\<|\,|\.|\>|\?|\"|\;|\:)).)*$