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";
}
在此先感谢您的帮助。
这里有两个问题:
- 你的字符class中没有
.
(字符class中的.
不需要转义)
- 字符 class 中的
-
需要转义,或者移到前端或末尾(在其他正则表达式引擎中转义不可用)。它自己在它的每一侧创建一系列字符。
所以:
^[-a-z0-9 ,#'\/.]{3,50}$
应该适合你。 (另外,如果您使用不同的定界符,则不需要转义正斜杠)
我正在使用 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";
}
在此先感谢您的帮助。
这里有两个问题:
- 你的字符class中没有
.
(字符class中的.
不需要转义) - 字符 class 中的
-
需要转义,或者移到前端或末尾(在其他正则表达式引擎中转义不可用)。它自己在它的每一侧创建一系列字符。
所以:
^[-a-z0-9 ,#'\/.]{3,50}$
应该适合你。 (另外,如果您使用不同的定界符,则不需要转义正斜杠)