Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 街道地址的简单正则表达式_Javascript_Jquery_Regex - Fatal编程技术网

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

Javascript 街道地址的简单正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我知道在这方面至少有十几个问题。我正在尝试使用Regex对街道地址的输入进行简单验证,从而检查输入条目中是否至少有两个空格。原因是什么?在大多数情况下,美国地址至少有3部分,街道编号、街道名称、类型(车道、车道、大道、街道等) 如果条目不匹配,我想提醒用户至少,如果条目有三个以上的空格,这意味着地址中有更多的名称,这很好,但如果不满足最小值,则需要发出警告。我的最新成果如下,但不起作用 var addregex = new RegExp("^\d{1,6}\040([A-Z]{1}[a-z]

我知道在这方面至少有十几个问题。我正在尝试使用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();
            }
为什么不呢

var address="123 Something Street";
if (address.split(" ").length>2) {
    alert("valid");
} else {
    alert("invalid");
}

你有一些可行的建议。然而,我想为您提供一个我认为符合您要求的正则表达式:

\d+\s+\w+\s+\w+
或者,如果这只是一个警告,您甚至可以添加对您指定的“类型”的测试,例如:

\d+\s+\w+\s+(?:st(?:\.|reet)?|ave(?:\.|nue)?|lane|dr(?:\.|ive)?)
允许使用带或不带句号的缩写版本。(随意增加道路、庭院等)

请点击查看

希望这有帮助

问候


编辑:记住为不区分大小写添加标志。;)

您只需要一个简单的测试:
/^\s*\s+(?:\s+\s+{2}/
\w+(\s\w+{2,}

说明:

  • \w+
    =>字母数字,一个或多个重复
  • \s
    =>空白
  • (\s\w+)
    =>编号的捕获组[\s\w+]
  • {2,}
    =>至少两次重复

由于某些原因,我无法让其他人工作,但这一次验证了我找到的所有街道地址

var value = '12136 Test This Road';
var streetAddRegEx = RegExp('/\d{1,}(\s{1}\w{1,})(\s{1}?\w{1,})+)/g');
streetAddRegEx.test(value);

基本上是我做的,所以它是任何一组单词,而不是一组数字…

改进版,基于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)/
以下代码::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[p;p;p;p;p;p;p)p[p[p[p[p[p[124;p)p]p[p[[[[[[p]p]p]p]p]p]p[[[[[[[[[[[[p]p]p]p]p]p]p][[[[[[[[[[[[[p]p]p]p]p]的[[[[[[[[[[[[[[[3]p]p]p]p]的[[[[[[[[[[|\?|\“|\ |\:))*$
我不确定我是否明白,那么大的正则表达式只是为了检查两个空格吗?我只会计算空格(修剪,比较长度与长度,并替换\s)-并非所有地址都以数字开头。^^^
str.split(/\s+//g).length>2
US street地址只能包含number+street。地址不规则,不应使用正则表达式验证地址,除非您对遗漏大量案例感到满意(有时为20%到40%)这里有一篇关于地址和正则表达式的有用文章:这正是我所使用的但不起作用的内容。在RegExp()at:2:22使用adeneo的正则表达式进行空间工作没有语法错误:无效正则表达式://d{1,}(s{1}w{1,})(s{1}?w{1,}+)/g/:Unmatched'),这不适用于诸如“PO Box 123”这样的PO框这遗漏了几个地址样式,例如“123 West Second Ave”
^(?!\s*$)^((?!([p|P][-. ]?[o|O].?[- ]?|post office )[b|B]([ox|OX]))(?!(\`|\~|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\+|\=|\[|\{|\]|\}|\||\\|\'|\<|\,|\.|\>|\?|\"|\;|\:)).)*$