我想将地址拆分为城市,州和邮政编码。使用正则表达式分割美国的地址PHP
现在用我现在的正则表达式模式,我可以得到邮政编码和状态,但我在匹配城市时遇到了麻烦。
这是我目前的格局
/\s*([^,]+?)\s*((?:\w{2,3}|(AVE))[A-Z]+?(?:\s[A-Z]+)?)\s*(\w{2})\s*(\d{5}(?:-\d{4})|\d{5}(?:-\s\d{4})?)/
演示:https://regex101.com/r/kQ2dE7/1
通过上面我的演示,我能够在城市正确匹配,但是,这并不适用与其他类型的地址。
https://regex101.com/r/kQ2dE7/2
https://regex101.com/r/kQ2dE7/4
我希望第一个捕获组只匹配,直到有数字或仅数字或文字像ST,CT,AVE,DR一个字一个字。
例如:
11111甲BAY RD AAA111阳光岛海滩FL 33160-4266
11111甲BAY RD AAA111
阳光岛海滩
FL
33160-4266
第一个匹配组应检查它是否包含“ST”/“CT”/“DR”/“AVE”或带有数字的单词。然后它会匹配到这个词。
此外,如果字符串中有该单词的两个实例,那么它应该匹配,直到最远的单词。
实施例:
111 11TH ST AAAA2 BROOKLYN NY 11209- 4940
111 11TH ST AAAA2
BROOKLYN
NY
11209- 4940
(这个例子中,ST与数词存在,那么它应该匹配直到数字。)
这就是为什么我想创建一个条件语句,在我正则表达式匹配某些词。如何在正则表达式中实现?
这是一个傻瓜的差事,尤其是如果你接受用户输入。如果你可以更清楚地陈述你需要的正则表达式,可能有人会想出一个,但它永远不会可靠地工作。有太多的排列。 – miken32