街道地址的简单正则表达式

时间:2014-01-21 16:48:36

标签: javascript jquery regex

我知道至少有十几个问题。我正在尝试使用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();
            }

7 个答案:

答案 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]))(?!(\`|\~|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\+|\=|\[|\{|\]|\}|\||\\|\'|\<|\,|\.|\>|\?|\"|\;|\:)).)*$