50 个常用正则表达式:邮箱、手机、身份证、URL
正则表达式是开发中最常用的工具之一。本文收集 50 个常用正则表达式,方便查阅。
常用验证正则
1. 邮箱
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
2. 手机号(中国大陆)
^1[3-9]\d{9}$
3. 身份证号(18位)
^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
4. URL
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
5. IPv4 地址
^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
6. 中文字符
^[\u4e00-\u9fa5]+$
7. 英文字母
^[a-zA-Z]+$
8. 数字
^\d+$
9. 小数
^\d+\.\d+$`
10. 整数(可为负)
^-?\d+$
格式化正则
11. 银行卡号(16-19位)
^\d{16,19}$
12. QQ 号
^[1-9]\d{4,10}$
13. 微信号
^[a-zA-Z][a-zA-Z0-9_-]{5,19}$
14. 邮政编码
^[1-9]\d{5}$
15. 车牌号
^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤川青藏琼宁][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$
16. MAC 地址
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
17. 日期格式(YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
18. 时间格式(HH:MM:SS)
^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$
19. HTML 标签
<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$
20. CSS 颜色值
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
提取正则
21. 提取数字
\d+
22. 提取中文
[\u4e00-\u9fa5]+
23. 提取英文单词
[a-zA-Z]+
24. 提取邮箱
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
25. 提取 URL
https?:\/\/[^\s]+
替换正则
26. 去除空格
\s+
27. 去除 HTML 标签
<[^>]+>
28. 手机号脱敏
(\d{3})\d{4}(\d{4})
替换为:$1****$2
29. 邮箱脱敏
(\w)[\w.]*@(\w+\.\w+)
替换为:$1***@$2
30. 身份证脱敏
(\d{4})\d{10}(\d{4})
替换为:$1**********$2
编程语言中的正则
JavaScript
// 测试
/^1[3-9]\d{9}$/.test('13812345678');
// 提取
'hello123world'.match(/\d+/); // ['123']
// 替换
'hello world'.replace(/world/, 'JS'); // 'hello JS'
Java
// 测试
Pattern.matches("^1[3-9]\d{9}$", "13812345678");
// 提取
Pattern p = Pattern.compile("\d+");
Matcher m = p.matcher("hello123world");
while (m.find()) {
System.out.println(m.group());
}
// 替换
"hello world".replaceAll("world", "Java");
Python
import re
# 测试
re.match(r'^1[3-9]\d{9}$', '13812345678')
# 提取
re.findall(r'\d+', 'hello123world')
# 替换
re.sub(r'world', 'Python', 'hello world')
在线工具
使用 jsjson.com 正则表达式工具 进行正则测试和学习。
总结
正则表达式是开发中的瑞士军刀。掌握常用正则模式,可以大大提升开发效率。建议收藏本文,随时查阅。