验证街道地址和正式表达



我正在使用PHP版本7.0.14。尽管在Stackoverflow上有几个不错的例子,但我无法让我的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. 您的角色类中没有.(在字符类中,.不需要逃脱(
  2. 角色类中的-需要逃脱,或移至前部或端(在其他正则发动机中,逃逸不可用(。它本身会在其两侧创建一系列字符。

so:

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

应该为您工作。(另外,如果您使用其他定界符,则不需要逃脱前向斜线(

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

最新更新