常用的正则表达式

正则表达式在表单验证、文本提取以及数据清洗中,都能帮我们省下大量代码。今天就整理了一批日常开发高频用到的正则表达式,附上场景说明和使用提示,新手也能直接上手。

一、 基础字符匹配

这类正则主要用于快速筛选、匹配简单字符规则,是进阶用法的基础。

正则表达式 匹配场景 示例
^abc$ 精确匹配字符串abc(开头 + 结尾限制) 匹配abc,不匹配aabc/abc123
. 匹配除换行符外的任意单个字符 ​​​​​a.c匹配abc/a1c/a#c
\d 匹配单个数字(等价于0-9) \d\d匹配12/99,不匹配ab
\w 匹配字母、数字、下划线(等价于a-zA-Z0-9_) \w+匹配user_01/name23
\s 匹配任意空白字符(空格、制表符、换行等) a\sb匹配a b/a b
abc 匹配括号内的任意一个字符 abc匹配a/b/c
\^abc 匹配除括号内字符外的任意字符 \^abc匹配1/x/#,不匹配a

二、 表单验证高频正则

前端 / 后端做表单校验时,这些正则能直接复用,覆盖大部分常见场景。

1. 手机号验证

python 复制代码
^1[3-9]\d{9}$
  • 说明:以1开头,第二位为3-9(排除 12 开头的非手机号段),后面跟 9 位数字。
  • 注意:仅做格式校验,不验证号码是否真实存在。

2. 邮箱验证

javascript 复制代码
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
  • 说明:支持字母、数字、下划线、连字符,适配大部分主流邮箱格式(如user_name@163.com、test-123@qq.com.cn)。

3. 身份证号验证

python 复制代码
^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
  • 说明:严格匹配 18 位身份证结构 ------6 位地址码 + 8 位出生日期(19/20 开头)+3 位顺序码 + 1 位校验码(支持 X/x)。

4. 密码强度验证

python 复制代码
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,16}$
  • 说明:8-16 位,必须包含大小写字母和数字,兼顾安全性和易用性。
  • 进阶:如需加入特殊字符,可添加(?=.*!@#$%\^\&\*)。

5. 邮政编码

python 复制代码
^[1-9]\d{5}$
  • 说明:6 位数字,第一位不为 0。

三、 文本处理常用正则

日常做文本提取、替换、清洗时,这些正则能大幅提升效率。

1. 提取 URL 链接

python 复制代码
https?://[^\s]+

2. 匹配 HTML 标签

复制代码
<[^>]+>
  • 说明:匹配<开头、>结尾的标签,适用于简单的标签删除场景。
  • 注意:复杂 HTML 解析建议用专业库(如 Python 的 BeautifulSoup),正则无法处理嵌套标签。

3. 匹配中文字符

python 复制代码
[\u4e00-\u9fa5]
  • 说明:匹配任意单个汉字,\u4e00-\u9fa5是汉字的 Unicode 编码范围。
  • 扩展:\\u4e00-\\u9fa5+匹配连续汉字,可用于提取中文姓名、标题。

4. 去除多余空格

python 复制代码
\s+
  • 用法:将匹配到的连续空格替换为单个空格(如 JavaScript 中str.replace(/\s+/g, ' '))。

5. 匹配数字(整数 + 小数)

python 复制代码
^-?\d+(\.\d+)?$
  • 说明:匹配正负数、整数和小数,例如123、-45.67、0.89。

四、 开发小技巧 & 注意事项

1. 贪婪匹配 vs 非贪婪匹配

  1. 正则默认是贪婪匹配(尽可能匹配更多字符),比如a.*b匹配a123b456b时会取整个字符串;
  2. 加?可切换为非贪婪匹配,a.*?b会匹配a123b。

2. 不同语言的正则差异

  1. JavaScript 中需要加修饰符(如g全局匹配、i忽略大小写);
  2. Python 的re模块需注意转义字符(用原始字符串r''避免双反斜杠)。

3. 测试工具推荐 写正则时可以先用在线工具验证,比如 Regex101 、菜鸟工具正则测试,能直观看到匹配结果。

相关推荐
FRing0312 小时前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式
小白快快跑哦2 天前
python-字符串全解(六):正则表达式-元字符与转义
python·正则表达式·字符串·元字符·转义
小白快快跑哦4 天前
python-字符串全解(六):正则表达式-逻辑运算或
python·正则表达式·字符串·逻辑运算
MoRanzhi12034 天前
106.正则问题(分治)
python·算法·正则表达式·蓝桥杯·递归·分治算法·字符串处理
临床数据科学和人工智能兴趣组6 天前
在R语言的生态系统中,字符串处理一直是一个重要且复杂的任务
开发语言·正则表达式·r语言·r语言-4.2.1
小白快快跑哦6 天前
python-字符串全解(六):正则表达式-前后相断言
开发语言·python·正则表达式·前后相断言
小白快快跑哦8 天前
python-字符串全解(六):正则表达式-修饰符
python·正则表达式·修饰符
11路没有终点8 天前
正则表达式(Regex)通用学习文档
正则表达式
小白快快跑哦8 天前
python-字符串全解(六):正则表达式-分组
python·mysql·正则表达式·分组
临床数据科学和人工智能兴趣组8 天前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy