PHP正则表达式验证常见字段
在处理 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编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













