验证街道地址格式



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

[数字(最多 6 位数字(] [单词(最少 1 到最多 8 个单词 中间有空格,允许数字和 # (]、[单词(最少 1 个到最多 4 个单词,仅允许字母(]、[2 大写字母] [5 位数字]

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

123测试街, 测试城市, TT 12345

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

^([0-9a-zA-Z]+((,\s*[0-9a-zA-Z]+(*$

但这不允许逗号之间有多个单词,或者 zip 的大写字母和数字。任何帮助都会为我省去很多麻烦,我将不胜感激。

在处理街道地址时,确实有很多需要考虑的因素 - 比使用正则表达式有意义地处理的要多。此外,如果一个人在键盘上,打字错误的可能性总是很高,而且没有一个正则表达式可以解释所有可能的人为错误。

此外,根据您打算在收到地址后如何处理地址,您可能需要各种有用的信息,这些信息不会仅仅通过用正则表达式拆分粗略的地址组件来获得。

作为SmartyStreets(披露(的软件开发人员,我了解到正则表达式确实是这项工作的错误工具,因为地址并不像您想象的那样"常规"(标准化(。有更严格的验证工具可用,甚至可以在 Web 表单上安装插件,以在键入地址时对其进行验证,并返回大量有用的元数据和信息。

尝试正则表达式:

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}

查看演示

也接受 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})

最新更新