PHP电话号码正则表达式实现:控制号码长度不超过8位
问题原因
你当前正则里的{8}属于精确匹配量词,代表前面的[0-9]必须刚好出现8次,加上首位的1位数字,整个正则匹配的字符串总长度固定为9位,不符合你总长度不超过8位的要求。
修正后的正则
$regexNumber = '#^[1-9][0-9]{0,7}$#';
规则说明
- 首位仍保持匹配1-9的非0数字,占用1位长度
- 后续的
{0,7}是范围匹配量词,代表前面的[0-9]可以出现0到7次 - 最终整体匹配的总长度范围是1~8位,刚好满足总长度不超过8位的要求
- 如果需要限制最短长度,比如要求总长度最少为3位,把量词改成
{2,7}即可,首位1位加后续2位刚好满足最短3位的要求。
内容的提问来源于stack exchange,提问作者SurrenderAt20
相关产品推荐
相关产品推荐

