正则表达式测试
在线验证正则规则与文本匹配结果,支持常用修饰符与全局匹配预览。
匹配结果
等待测试...
常用正则示例
^[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 通常只关注首个命中。
这个工具是否会上传输入内容?
不会,匹配过程在浏览器本地执行。
语法报错如何排查?
先检查括号、反斜杠和字符集是否闭合,再逐步简化表达式定位问题。
