如何使用PHP的preg_match验证(0d)dddddddd格式的手机号?
手机号正则验证问题修正
你的正则表达式存在多处错误,导致无法正确验证(0d)dddddddd格式的手机号,具体问题及修正方案如下:
问题分析
- 错误的
\0匹配:\0在正则中代表ASCII空字符,而非数字0,需要替换为普通字符0 - 括号转义不完整:原正则中
\(\0\d{1})?的右括号未转义,会被识别为正则分组的结束标记,需改为\) - 多余的末尾括号:正则结尾的
)属于冗余字符,会导致匹配失败 - 冗余的
\d{1}:\d{1}等价于\d,可以简化写法
修正后的代码
正则表达式
修正后的正则为:/^\(0\d\)?\d{8}$/
- 若要求必须带
(0d)前缀,可去掉?,改为:/^\(0\d\)\d{8}$/
PHP代码示例
$validator = preg_match('/^\(0\d\)?\d{8}$/', $phone); if ($validator) { echo "Valid phonenumber"; } else { echo "Invalid phonenumber"; }
正则说明
^:匹配字符串起始位置\(0\d\)?:可选的前缀部分,匹配(0+任意数字+),?表示该部分可出现0次或1次\d{8}:匹配连续8位数字$:匹配字符串结束位置
内容的提问来源于stack exchange,提问作者Sridhar Reddy
相关产品推荐
相关产品推荐

