我正在使用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";
}
事先感谢您的任何帮助。
您在这里有两个问题:
- 您的角色类中没有
.
(在字符类中,.
不需要逃脱( - 角色类中的
-
需要逃脱,或移至前部或端(在其他正则发动机中,逃逸不可用(。它本身会在其两侧创建一系列字符。
so:
^[-a-z0-9 ,#'/.]{3,50}$
应该为您工作。(另外,如果您使用其他定界符,则不需要逃脱前向斜线(
演示:https://regex101.com/r/pfzalo/1/