使用PHP的意大利街道地址验证

时间:2019-04-02 16:21:42

标签: php regex validation street-address

我需要使用 PHP regex 验证意大利地址。 我必须这样写:

Via/Corso (meaning street)/Viale (boulevard)/Piazza (square) [road] (,) [civic number], [city] ([abbreviation of province]).

一个例子是:

  • 都灵(TO)的Via Garibaldi 374
  • 圣彼得广场(Piazza San Pietro),325,Cerveteri(RM)

在上一篇文章中,我找到了完整的澳大利亚地址的解决方案,但我不知道如何进行更改。 这是代码和被认为有效的地址示例:

(澳大利亚15 Cremorne,Gordon St 15号)

if(!(preg_match('/^(?:\\d+ [a-zA-Z ]+, ){2}[a-zA-Z ]+$/', trim($_POST["via"])))){
    $via_err = "This street is invalid, insert #, Street name, Zip Code, City, Country.";
} else
    $via = trim($_POST["via"]);

感谢所有可以帮助我解决此问题的人。

1 个答案:

答案 0 :(得分:0)

您将想要执行以下操作,只需确保使用i标志运行它即可使其不区分大小写:

(via|corso|viale|piazza) ([a-zA-Z ]+?),? (\d+), (\w+) \((\w+)\)

最棘手的地方是第一个开关,由于街道种类繁多,所以有点混乱。我只是注意到您实际上并不需要这些组,因此除了第一组括号之外,您还可以删除它们:

(via|corso|viale|piazza) [a-zA-Z ]+?,? \d+, \w+ \(\w+\)

如果您要提取它们,它们也不会受伤。