验证街道地址格式

时间:2018-05-25 13:17:58

标签: regex validation format street-address

我试图使用正则表达式验证Google表单中街道地址的格式。我无法确认它是一个真实的地址,但我想至少验证该字符串是:

  

[数字(最多6位数)] [字(最小1到最多8个字)   中间的空格和数字和#允许)],[单词(最少一到最多四个单词,只有字母)],[2   大写字母] [5位数字]

我希望我在括号之间留下的空格和逗号是正确的,我将它们放在上面的示例中。这将验证

  

123 test st,test city,TT 12345

这显然不是真正的地址,但至少需要输入正确的格式。数据来自回答表单上的问题的人,所以它总是只是一个地址,没有名字。此外,他们所有地址都是南佛罗里达州的一个地区,几乎所有地址都符合这种格式。我遇到的问题是人们没有进入城市或逗号,所以如果他们不这样做,我想给他们一个错误。到目前为止,我已经找到了这个

  

^([0-9A-ZA-Z] +)(\ S * [0-9A-ZA-Z] +)* $

但是这并不允许逗号之间有多个单词,或者拉链的大写字母和数字。任何帮助都会让我感到很头疼,我会非常感激。

3 个答案:

答案 0 :(得分:1)

在处理街道地址时确实需要考虑很多事情 - 超过你可以使用正则表达式进行有意义的处理。此外,如果一个人在键盘上,那么输入错误的可能性总是很高,而且正如我们所说的那样,一个正则表达式不能解决所有可能的人为错误。

此外,根据您在收到地址后打算使用的地址,您可能需要提供各种有用的信息,而这些信息只能通过分割粗略地址组件来实现。正则表达式。

作为SmartyStreets的软件开发人员(披露),我已经了解到regular expressions really are the wrong tool for this job,因为地址不是常规的'你可能认为(标准化)。有更严格的验证工具可用,甚至plugins you can install on your web form来验证输入的地址,并返回wealth of of useful metadata and information

答案 1 :(得分:0)

尝试正则表达式:\d{1,6}\s(?:[A-Za-z0-9#]+\s){0,7}(?:[A-Za-z0-9#]+,)\s*(?:[A-Za-z]+\s){0,3}(?:[A-Za-z]+,)\s*[A-Z]{2}\s*\d{5}

请参阅Demo

答案 2 :(得分:0)

也接受 Apt#:

(^[0-9]{1,5}\s)([A-Za-z]{1,}(\#\s|\s\#|\s\#\s|\s)){1,5}([A-Za-z]{1,}\,|[0-9]{1,}\,)(\s[a-zA-Z]{1,}\,|[a-zA-Z]{1,}\,)(\s[a-zA-Z]{2}\s|[a-zA-Z]{2}\s)([0-9]{5})