php - 使用正则表达式验证街道地址

php - validate street address with regular expression

我正在使用 php 版本 7.0.14。尽管在 Whosebug 上有几个很好的例子,但我无法让我的 php 正则表达式工作。几个小时以来,我一直在尝试各种可能的组合。问题在于尝试允许必须转义的句点和斜杠。我试过用双引号和单引号将正则表达式括起来。我试过用一个反斜杠、两个、三个、四个来转义。它要么出错,让所有内容通过(如 $),要么不允许句点和斜杠。

    $strStreet = "123 1/2 S. Main St. Apt. 1";
   #$strRegEx = "/^[a-z0-9 ,#-'\/]{3,50}$/i";
    $strRegEx = '/^[a-z0-9 ,#-\'\/]{3,50}$/i';
    if (preg_match($strRegEx, $strStreet) === 0 ) {
     print "bad address";
    }

在此先感谢您的帮助。

这里有两个问题:

  1. 你的字符class中没有.(字符class中的.不需要转义)
  2. 字符 class 中的 - 需要转义,或者移到前端或末尾(在其他正则表达式引擎中转义不可用)。它自己在它的每一侧创建一系列字符。

所以:

^[-a-z0-9 ,#'\/.]{3,50}$

应该适合你。 (另外,如果您使用不同的定界符,则不需要转义正斜杠)

演示:https://regex101.com/r/PfZAlO/1/