常用验证正则:用户名、密码、邮箱、手机号、身份证(PHP和JavaScript)
日常开发中,常常会用到一些简单常用的正则表达式,用于判断一些常见的情况
下边,就列出五种(验证用户名,密码强度,邮箱格式,手机号格式和身份证格式)常见的情况
分成PHP版本和JavaScript两个版本。
其实,两种语言的正则是完全一样的,只是相关函数的使用略有不同。
PHP版本
<?php // 验证用户名是否合法,必须是以字母开头,只能包含字母数字下划线和减号,4到16位 function checkUserName($username) { if (preg_match('/^[A-Za-z]{1}[A-Za-z0-9_-]{3,15}$/', $username)) { return 1; } else { return 0; } } echo checkUserName('abcde12345-_a'); // 验证密码强度,6-16位,,至少有一个数字,一个大写字母,一个小写字母和一个特殊字符,四个任意组合 function checkPassword($password) { if (preg_match('/(?=^.{6,16}$)(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*]).*$/', $password)) { return 1; } else { return 0; } } echo checkPassword('CCCc@#1234567890'); // 验证邮箱是否合法,必须有@,前边最少2个字符,字母或数字开头,域名部分最少1位,后缀可以是一级也可以是二级,最少两位 function checkEmail($email) { $email = strtolower($email);// 全部转小写(邮箱不区分大小写) if (preg_match('/^[a-z0-9]{1}[a-z0-9_-]{1,}@[a-z0-9]{1,}(\.[a-z]{2,})*\.[a-z]{2,}$/', $email)) { return 1; } else { return 0; } } echo checkEmail('abc_def-g@abc.com.cn'); // 验证手机号是否合法 function checkPhone($phone) { if (preg_match('/^1[345678]{1}\d{9}$/', $phone)) { return 1; } else { return 0; } } echo checkPhone('15512345678'); // 验证身份证号是否合法 // 身份证号:前两位表示地区,所以第一位不可能是0,而第7、8两位是年份的前两位,也不可能是0,最后一位除了10个数字以外还可能是X|x function checkIdCard($idcard) { if (preg_match('/^[1-9]{1}\d{5}[1-9]{2}\d{9}[Xx0-9]{1}$/', $idcard)) { return 1; } else { return 0; } } echo checkIdCard('210801199010012031');
JavaScript版本
// 验证用户名是否合法,必须是以字母开头,只能包含字母数字下划线和减号,4到16位 function checkUserName(username) { if (/^[A-Za-z]{1}[A-Za-z0-9_-]{3,15}$/.test(username)) { return 1; } else { return 0; } } console.log(checkUserName('abcde12345-_a')); // 验证密码强度,6-16位,,至少有一个数字,一个大写字母,一个小写字母和一个特殊字符,四个任意组合 function checkPassword(password) { if (/(?=^.{6,16}$)(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*]).*$/.test(password)) { return 1; } else { return 0; } } console.log(checkPassword('CCCc@#1234567890')); // 验证邮箱是否合法,必须有@,前边最少2个字符,字母或数字开头,域名部分最少1位,后缀可以是一级也可以是二级,最少两位 function checkEmail(email) { email = email.toLowerCase();// 全部转小写(邮箱不区分大小写) if (/^[a-z0-9]{1}[a-z0-9_-]{1,}@[a-z0-9]{1,}(\.[a-z]{2,})*\.[a-z]{2,}$/.test(email)) { return 1; } else { return 0; } } console.log(checkEmail('abc_def-g@abc.com.cn')); function checkPhone(phone){ if (/^1[34578]\d{9}$/.test(phone)) { return 1; } else { return 0; } } console.log(checkPhone('15512345678')); // 验证身份证号是否合法 // 身份证号:前两位表示地区,所以第一位不可能是0,而第7、8两位是年份的前两位,也不可能是0,最后一位除了10个数字以外还可能是X|x function checkIdCard(idcard) { if (/^[1-9]{1}\d{5}[1-9]{2}\d{9}[Xx0-9]{1}$/.test(idcard)) { return 1; } else { return 0; } } console.log(checkIdCard('210801199010012031'));
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库