PHP Regex 如何精确匹配街道地址中的 2 或 3 位数字

标签 php regex

我正在尝试找出与街道地址匹配的正则表达式。街道地址的格式必须是 2 或 3 位数字,后跟街道名称的文本字符串,然后以“街道”或“道路”结尾。

所以一个有效的地址可以是:

  • 12 假街
  • 12假路
  • 假街123号
  • 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 等都可以。

最佳答案

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

使用这个正则表达式:

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

区别是 [a-zA-Z]+ 而不是 [a-zA-Z]

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

关于PHP Regex 如何精确匹配街道地址中的 2 或 3 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19620887/

相关文章:

python - 用方括号包围 python 字符串中的模式

java - 如何匹配以或等于搜索字符串开头的 TreeMap 值

php - 为 php mysql 中的特定行保留一些 id

php - instanceof 等效于字符串表示的类名

php - gzcompress 是如何工作的?

php - 使用 TINYMCE 的 JUST BOIL ME 插件时出现路径错误 -- php

php - 从三个表中选择并显示结果

python - 在文件名中创建一个以空格分隔的选定字符列表

java - 如何从正则表达式捕获文本?

c# - 如何使用正则表达式检查电话号码