我试图使用正则表达式验证Google表单中街道地址的格式。我无法确认它是一个真实的地址,但我想至少验证该字符串是:
[数字(最多6位数)] [字(最小1到最多8个字) 中间的空格和数字和#允许)],[单词(最少一到最多四个单词,只有字母)],[2 大写字母] [5位数字]
我希望我在括号之间留下的空格和逗号是正确的,我将它们放在上面的示例中。这将验证
123 test st,test city,TT 12345
这显然不是真正的地址,但至少需要输入正确的格式。数据来自回答表单上的问题的人,所以它总是只是一个地址,没有名字。此外,他们所有地址都是南佛罗里达州的一个地区,几乎所有地址都符合这种格式。我遇到的问题是人们没有进入城市或逗号,所以如果他们不这样做,我想给他们一个错误。到目前为止,我已经找到了这个
^([0-9A-ZA-Z] +)(\ S * [0-9A-ZA-Z] +)* $
但是这并不允许逗号之间有多个单词,或者拉链的大写字母和数字。任何帮助都会让我感到很头疼,我会非常感激。
答案 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})