我正在尝试找出与街道地址匹配的reg ex。街道地址的格式必须是 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个空间。