【问题标题】:How to match two digits in pregmatch?如何匹配 preg_match 中的两位数?
【发布时间】:2016-05-17 11:33:22
【问题描述】:
我返回了一个 preg_match 来检查起始数字是否为 9477 并且它工作正常。但现在我想添加另一个条件来添加9477 或9476 应该是有效的。
条件如下:
- 应包含 11 位数字
- 应该以
9477 或9476 开头
这是我的代码:
preg_match('/^9477\d{7}$/',$Mnumber)
【问题讨论】:
标签:
php
preg-match
preg-match-all
preg-grep
【解决方案1】:
在两个数字之间使用交替:
preg_match('/^947(?:7|6)\d{7}$/',$Mnumber)
(?:7|6) 是匹配数字 7 或 6 的非捕获组。非捕获组比捕获组更有效。
你也可以这样做:
preg_match('/^947[76]\d{7}$/',$Mnumber);
[67] 是匹配数字7 或6 的字符类
【解决方案2】:
在[]中使用分组
echo preg_match('/^947[76]\d{7}$/',$Mnumber);
【解决方案3】:
只需使用(9477|9476)
echo preg_match('/^(9477|9476)\d{7}$/',$Mnumber);
你也可以使用:
/^947(7|6)\d{7}$/
/^947[76]\d{7}$/