📅作者:盼哥PyAI实验室
💡标签:Python正则表达式、编程基础、字符串匹配、实战练习
一、项目简介
今晚,我完成了一个小而实用的 Python 项目------
👉 通过正则表达式验证 QQ 邮箱与手机号的合法性。
这个练习让我体会到:
正则不是死记硬背的符号,而是一种能精准"描述规则"的语言。
在这篇文章中,我不仅分享实战代码,还整理出最核心的正则语法表格,帮助你从理解到应用一次吃透。
二、项目目标与思路
实现以下两个输入验证:
1️⃣ 检查输入的 QQ 邮箱 是否正确(如 1234567@qq.com)
2️⃣ 检查输入的 手机号 是否为合法的 11 位号码(以 1 开头,第二位 3~9)
程序逻辑如下:
- 用户输入 → 匹配正则 → 判断结果 → 提示重新输入或通过
三、完整代码实现
python
import re
# 输入 QQ 邮箱
qq_number = input("请输入qq号码: ")
# 输入手机号
phon_number = input("请输入手机号: ")
# 验证 QQ 邮箱格式
if re.findall(r'^[1-9]\d{4,10}@qq.com$', qq_number) == []:
print("❌ qq邮箱号码不正确,请重新输入")
else:
print("✅ 正确,你的qq邮箱号码是正确的!")
# 验证手机号格式
if re.findall(r'^1[3-9]\d{9}$', phon_number) == []:
print("❌ 你的手机号不符合要求")
else:
print("✅ 正确,你的手机号是正确的!")
四、运行效果
📸 实际运行结果如下:
请输入qq号码: 015247@qq.com
请输入手机号: 12379363796
qq邮箱号码不正确,请重新输入
你的手机号不符合要求
五、正则表达式知识拓展 🧩
为了理解这段代码,我们需要拆解每个"元字符"的含义。
正则中的元字符就像"语法词汇",决定了匹配的精准度。
1️⃣ 单词符匹配
| 字符 | 描述 |
|---|---|
. |
匹配任意一个字符(除了\n) |
[] |
匹配中列举的任意字符 |
\d |
匹配数字,等价于 [0-9] |
\D |
匹配非数字 |
\s |
匹配空白字符(空格、Tab) |
\S |
匹配非空白字符 |
\w |
匹配单词字符 [a-zA-Z0-9_] |
\W |
匹配非单词字符 |
📘例如:
\d\d\d匹配任意三位数字,如123、007。
\w+匹配一个或多个字母数字组合。
2️⃣ 表示数量的元字符
| 字符 | 描述 |
|---|---|
{m} |
前一个字符出现 m次 |
{m,} |
前一个字符出现 至少m次 |
{m,n} |
前一个字符出现 m到n次之间 |
💡例子:
\d{4,10}表示匹配 4 到 10 位数字。所以在邮箱匹配中:
^[1-9]\d{4,10}@qq.com$表示 非0开头的5~11位QQ号邮箱。
3️⃣ 表示边界的元字符
| 字符 | 描述 |
|---|---|
^ |
匹配字符串的开头 |
$ |
匹配字符串的结尾 |
✏️比如:
^1[3-9]\d{9}$表示手机号必须 以1开头 ,总长11位 ,且结尾处必须是数字 。
这就是为什么输入
1123456789(10位)会被识别为错误。
4️⃣ 分组与逻辑匹配
| 字符 | 描述 | |
|---|---|---|
| ` | ` | 匹配左右任意一个表达式 |
() |
进行分组匹配或提取匹配内容 |
例如:
(abc|xyz)表示匹配 "abc" 或 "xyz"。
(1[3-9]\d{9})可以提取出手机号本体。
六、深入理解实战中的正则
| 目标 | 使用的正则 | 含义解析 |
|---|---|---|
| QQ邮箱 | ^[1-9]\d{4,10}@qq.com$ |
以1-9开头,后接4~10位数字,以@qq.com结尾 |
| 手机号 | ^1[3-9]\d{9}$ |
以1开头,第二位为3~9,总长11位数字 |
✅ 如果输入
12345@qq.com会匹配成功;❌ 如果输入
02345@qq.com会失败,因为0不能开头。
七、学习心得与总结
🔥通过这次正则表达式实战,我最大的感受是:
"正则不是记住语法,而是能看懂文字背后的规律。"
写正则的过程,其实就是把"脑子里的规则"翻译成"机器能读懂的逻辑"。
💬从初学阶段到今天,我总结出三条经验:
1️⃣ 用示例验证每条正则,别光看书。
2️⃣ 多拆别人的正则表达式,从理解开始。
3️⃣ 记得加注释!未来自己也能看懂。
八、延伸练习建议
如果你想进一步练手,可以试着:
- 匹配邮箱类型不限的正则(如
@163.com,@gmail.com等) - 验证身份证号、日期格式、IP 地址
- 在网页爬虫中提取内容(如手机号、邮箱)
📢结语
正则表达式像一把"文本的手术刀",
掌握之后,你就能快速筛选、提取、清洗各种数据。
❤️如果这篇文章对你有帮助,请点个 赞 👍 + 收藏 ⭐ + 关注我