在处理用户输入或者数据验证等场景中,常常需要对大陆电话号码进行格式匹配和验证。大陆电话号码有多种常见格式,比如11位数字的手机号码和10位数字的固定电话号码(包含区号)。下面我们来编写一个PHP正则表达式用于匹配大陆电话号码。

<?php
$phonePattern = '/^(1[3-9]\d{9}|0\d{2,3}-\d{7,8})$/';
$testPhones = [
'13812345678',
'010-12345678',
'021-87654321',
'12345678901', // 错误的11位数字
'01012345678', // 错误的10位格式
'138 1234 5678', // 错误的格式
'+8613812345678' // 错误的格式
];
foreach ($testPhones as $phone) {
if (preg_match($phonePattern, $phone)) {
echo "$phone 匹配成功<br>";
} else {
echo "$phone 匹配失败<br>";
}
}
?>
上述代码中,定义的正则表达式/^(1[3-9]\d{9}|0\d{2,3}-\d{7,8})$/,它能够匹配两种格式的大陆电话号码。其中1[3-9]\d{9}用于匹配11位的手机号码,以1开头,第二位在3到9之间,后面跟着9位数字;0\d{2,3}-\d{7,8}用于匹配10位的固定电话号码,以0开头,接着是2到3位的区号,然后是-,最后是7到8位的本地号码。

通过preg_match函数对一系列测试电话号码进行匹配,输出匹配结果。这样可以方便地验证用户输入的电话号码是否符合大陆电话号码的格式要求,确保数据的准确性和一致性。在实际应用中,可以将这个正则表达式应用到表单验证、数据入库前检查等场景,有效地提高数据质量。


发表评论