正则表达式测试

在线验证正则规则与文本匹配结果,支持常用修饰符与全局匹配预览。

正则表达式
修饰符 flags
测试文本
匹配结果
等待测试...

常用正则示例

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
邮箱格式
^1[3-9]\d{9}$
中国大陆手机号
^\d{4}-\d{2}-\d{2}$
日期 YYYY-MM-DD
^(https?:\/\/).+$
HTTP/HTTPS 链接
^[\u4e00-\u9fa5]+$
纯中文字符

基础语法速查

.
匹配任意单字符(默认不含换行)
a.c 匹配 abc
^ / $
匹配开头 / 结尾
^abc$ 仅匹配 abc
* + ?
重复次数:0+ / 1+ / 0或1
ab+ 匹配 ab, abb
[]
字符集合
[abc] 匹配 a 或 b 或 c
|
或逻辑
cat|dog 匹配 cat 或 dog

功能使用

先输入正则表达式和测试文本,再按需选择 flags。点击“测试”后会输出是否匹配、首个匹配内容及全局匹配列表。

如果表达式语法有误,工具会直接给出错误提示,便于快速排查。

正则表达式定义

正则表达式,Regular Expression,通常简称 Regex,是一种用于描述字符串匹配规则的表达式语言。它主要用于文本的查找、校验、提取、替换和切分,在编程开发、数据处理、日志分析和表单校验等场景中应用非常广泛。

你可以把正则表达式理解为一种“字符串规则模板”。普通字符串只能匹配固定内容,而正则表达式可以描述一类具有相同规律的字符串。

正则表达式的核心作用

  • 1. 字符串校验。判断文本是否符合指定格式,例如手机号、邮箱、身份证号、密码规则等。
  • 2. 文本查找。从大段文本中定位符合条件的内容,例如日志中的 IP、日期、订单号。
  • 3. 内容替换。将匹配到的内容批量替换成目标内容,例如去除多余空格、统一文本格式。
  • 4. 数据提取。从复杂字符串中抽取目标字段,例如从 URL 中提取参数、从文本中提取数字。
  • 5. 文本切分。按照某种规则拆分字符串,例如按空格、逗号、分号等分隔内容。

正则表达式的组成

  • 1. 普通字符。表示字符本身,例如 a、b、1、2。
  • 2. 元字符。具有特殊含义的字符,例如 .、*、+、?、[]、()、^、$ 等。
  • 3. 量词。用于描述字符出现的次数,例如 * 表示 0 次或多次,+ 表示 1 次或多次,{n} 表示固定出现 n 次。
  • 4. 边界符。用于限定匹配位置,例如 ^ 表示开头,$ 表示结尾。
  • 5. 字符集合。用于表示某一类字符,例如 [0-9]、[a-z]、[A-Z]。

常见元字符说明

  • 1. \d 表示一个数字字符。
  • 2. \w 表示一个字母、数字或下划线。
  • 3. . 表示任意单个字符。
  • 4. * 表示前一个元素重复 0 次或多次。
  • 5. + 表示前一个元素重复 1 次或多次。
  • 6. ? 表示前一个元素重复 0 次或 1 次。
  • 7. ^ 表示匹配字符串开始位置。
  • 8. $ 表示匹配字符串结束位置。

示例

1. 匹配手机号

^1\d{10}$

含义:整串必须以 1 开头,后面跟 10 个数字,总长度为 11 位。

2. 匹配邮箱

^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$

含义:用于匹配常见邮箱格式。

3. 提取连续数字

\d+

含义:匹配一个或多个连续数字,例如 123、20240420、999。

正则表达式的优势

  • 1. 规则表达能力强。可以用较短的语句描述较复杂的字符串匹配规则。
  • 2. 适合批量处理文本。对于查找、替换、提取这类操作效率很高。
  • 3. 应用范围广。编程语言、数据库、编辑器、命令行工具都广泛支持正则表达式。
  • 4. 灵活性高。能够适配多种文本规则校验和字符串处理场景。
  • 5. 开发效率高。在很多文本处理任务中,使用正则表达式比手工编写字符串逻辑更直接。

正则表达式的不足

  • 1. 可读性一般。规则一旦复杂起来,不容易快速理解。
  • 2. 维护成本偏高。写错一个符号,匹配结果可能完全不同。
  • 3. 不适合处理复杂嵌套结构。例如完整 HTML、复杂语法树等内容不适合单纯依赖正则表达式处理。
  • 4. 各语言实现存在差异。不同开发语言或工具对正则表达式的支持细节可能不同。

典型应用场景

  • 1. 表单输入校验。
  • 2. 日志内容分析。
  • 3. 批量文本替换。
  • 4. 数据清洗与提取。
  • 5. SQL、脚本、命令行中的模式匹配。
  • 6. IDE 中的搜索和替换。

常见问题 FAQ

为什么明明写了正则却匹配不到?

常见原因是少了合适的 flags(如 i、m、g),或输入文本包含换行和空格未被表达式覆盖。

g 标志有什么作用?

g 表示全局匹配,会返回所有命中的片段;不加 g 通常只关注首个命中。

这个工具是否会上传输入内容?

不会,匹配过程在浏览器本地执行。

语法报错如何排查?

先检查括号、反斜杠和字符集是否闭合,再逐步简化表达式定位问题。