PHP注册如何在街道地址中准确地preg_match 2或3位数

时间:2013-10-27 17:11:55

标签: php regex

我试图找出匹配街道地址的reg ex。街道地址的格式必须是2位或3位数字,后跟街道名称的文本字符串,然后以“街道”或“道路”结尾。

所以有效地址可以是:

  • 12 Fake Street
  • 12假道
  • 123 fake Street
  • 123假道

无效地址将是:

  • 1假街
  • 1假道
  • 1234假街
  • 1234假路


preg_match("/^[0-9]{2,3} *[a-zA-Z] *(Street|Road)$/", $_POST['street'])

我尝试了多种方法来解决这个问题,并且无法使数字正常工作。 如果我尝试/^[0-9]{2,3}$/它自己工作,但是当我添加字符串表达式时,它会混乱。同样使用不带^或$的公式,它将验证超过3位数的任何数字位数。因此,1234,12345等将起作用。

1 个答案:

答案 0 :(得分:1)

您没有正确的正则表达式来匹配第一个数字后面的街道名称,因为[a-zA-Z] 仅匹配单个字母

使用此正则表达式:

preg_match("/^[0-9]{2,3} +[a-zA-Z]+ +(Street|Road)$/", $_POST['street']);

差异为[a-zA-Z]+而非[a-zA-Z]

PS:同时更改为+而不是*,因为这些组件之间至少需要1个空格。

相关问题