PHP正则表达式验证常见字段

周末不加班
周末不加班
发布时间:2026-10-13 | 2人浏览过
原创

在处理 Web 表单提交时,确保用户输入的数据格式正确是基础且重要的一环。本文将探讨如何利用 PHP 的正则表达式工具,对电子邮件、网址、电话及邮政编码这四类常见数据进行标准化校验。

邮件地址的校验

对于邮箱地址的验证,核心在于匹配符合规范的本地用户名与域名结构。以下函数通过构建精确的模式字符串来实现这一目标:

  • $email_name: 匹配由字母、数字、下划线、连字符或点号组成的用户名部分。
  • $per_domain: 匹配域名中的主体段落(不包含顶级域)。
  • $mid_domain: 用于连接主域名的中间层级(如二级、三级域名),限制最多两段。
  • $end_domain: 限定顶级的域名后缀,这里仅允许 .com, .net, .org。
?php
/* 校验邮件地址*/
function checkMail($email) {
//用户名,由“\w”格式字符、“-”或“.”组成
$email_name= "\w|(\w[-.\w]*\w)";
//域名中的第一段,规则和用户名类似,不包括点号“.”
$code_at= "@";
$per_domain= "\w|(\w[-\w]*\w)";
//域名中间的部分,至多两段
$mid_domain= "(\." .$per_domain. "){0,2}";
//域名的最后一段,只能为“.com”、“.org”或“.net”
$end_domain= "(\.(com|net|org))";
$rs= preg_match(
"/^{$email_name}@{$per_domain}{$mid_domain}{$end_domain}$/",
$email
);
return (bool)$rs;
}
//测试用例
var_dump(checkMail("root@example.com"));   // false (当前规则不匹配 com)
var_dump(checkMail("Frank.Roulan@example.org")); // true
?>

URL 地址的校验

网页链接通常以 http 或 https 开头。在实现校验时,可以设定协议为必填项(或可选),并对域名进行规范化匹配。需要注意的是,随着技术发展,`ereg` 等老旧正则函数已被废弃,建议使用 `preg_match`:

?php
function checkDomain($domain) {
    // 匹配 http 或 https,后面可选的 s,然后是 :// 以及域名部分
    // 此例仅演示基础匹配,实际生产中建议包含更复杂的 URL 解析库
    return preg_match("~^(http|https)://[^\s]+$~", $domain);
}
// 测试
echo checkDomain("www.taodoor.com") ? 'True' : 'False'; // False
?>

电话号码的校验

电话号码可能带有括号、空格或短横线等分隔符。为了进行严谨的数值判断,通常的做法是先将所有非数字符号剥离,然后检查剩余字符是否全为数字,并确保其长度符合预期的位数范围(例如国内号码通常为11位):

?php
function checkTelno($tel) {
    // 去掉括号、点号和空格等常见的无效干扰符号
    $clean_tel = preg_replace("/[\(\)\.\ -]/", "", $tel);
    // 确认剩余内容全是数字,且至少有 6 位(可根据需求改为 11)
    if (preg_match("/^\d+$/", $clean_tel) && strlen($clean_tel) >= 6) {
        return true;
    }
    return false;
}
var_dump(checkTelno("(086)-0411-12345678")); // True
?>

邮政编码的校验

以中国大陆为例,标准的邮政编码由六位纯数字组成。在验证前同样需要过滤掉任何可能伴随的空格或连字符,以保证最终比对结果的准确性:

?php
function checkZipcode($code) {
    // 剔除无关符号
    $clean_code = preg_replace("/[\.\ -]/", "", $code);
    // 严格匹配 6 位数字
    if (preg_match("/^\d{6}$/", $clean_code)) {
        return true;
    }
    return false;
}
var_dump(checkZipcode("123456")); // True
?>

总结

虽然上述示例涵盖了基本逻辑,但在现代 PHP 开发环境中,强烈建议避免使用已标记为废弃的正则函数(如旧式的 `ereg`)。同时,对于更为复杂的业务场景,直接使用现成的验证库往往比手写正则表达式更加健壮和维护友好。以上就是利用PHP正则表达式进行常见信息验证的详细内容,更多关于PHP编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表