🌐 ZH

🔣 正则表达式测试器

实时测试正则表达式模式并查看匹配结果。提供标志设置、分组捕获和常用模式库,帮助你快速验证和调试正则表达式。

常用模式

指南

了解更多

01

1. 正则表达式基础入门

正则表达式(Regular Expression,简称Regex)是用于定义字符串搜索模式并进行匹配、提取和替换操作的强大工具。它既可以按字面直接匹配(如\d代表任意数字,\w代表单词字符),也可以借助特殊字符表达更复杂的模式规则。例如:^[a-z]+$表示整个字符串必须仅由小写字母组成。其中^表示字符串开头,$表示字符串结尾,[a-z]表示a到z区间内任意字母,+表示前面的内容出现一次或多次。几乎所有主流编程语言和文本编辑器都内置了对正则表达式的支持,它在表单输入验证、日志数据解析、字符串批量替换等场景中都是不可或缺的基础工具。

02

2. 常用正则表达式模式合集

以下是实际项目开发中最常用的一批正则表达式模式。邮箱地址:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$;中国大陆手机号:^1[3-9]\d{9}$(以1开头,第二位为3至9,共11位数字);网址URL:^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b;日期格式(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$;密码强度校验(至少8位,需同时包含大小写字母、数字与特殊字符):^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$。建议以这些经过验证的模式为基础,再根据具体项目的实际需求进行针对性调整。

03

3. 正则表达式标志位详解

正则表达式的标志位(flags)用于控制匹配引擎的具体搜索行为。g(global,全局匹配):查找字符串中所有符合条件的匹配项,而不只是第一个。i(ignoreCase,忽略大小写):使匹配不区分字母大小写,例如/hello/i既能匹配hello,也能匹配Hello和HELLO。m(multiline,多行模式):使^和$分别匹配每一行文本的开头和结尾,而非整个字符串的开头结尾。s(dotAll):使原本无法匹配换行符的元字符.也能匹配\n。u(unicode):确保能正确处理完整的Unicode字符集,比如各类表情符号和生僻字。y(sticky,粘性匹配):仅从上一次匹配结束的lastIndex位置继续开始搜索。举例来说,/hello/gi表示忽略大小写并查找字符串中所有的hello。

04

4. 捕获分组与反向引用

使用圆括号()可以创建捕获分组,将匹配到的子字符串单独捕获出来,供后续处理逻辑复用。例如:/(\d{4})-(\d{2})-(\d{2})/这个表达式中,$1代表捕获到的年份,$2代表月份,$3代表日期。在JavaScript中,match()方法返回的结果数组会自动包含这些捕获分组的内容。反向引用符号\1、\2则用于匹配与之前某个分组完全相同的文本内容,例如/(\w+)\s+\1/这个表达式可以匹配像"hello hello"这样重复出现的单词。非捕获分组(?:...)只负责对内容进行逻辑分组,但不会将其单独捕获保存,因此在只需要分组而不需要提取结果时,使用非捕获分组能带来更好的匹配性能。

05

5. 前瞻与后顾断言的应用

前瞻(lookahead)与后顾(lookbehind)断言可以用来检查某个特定模式的前面或后面是否满足条件,但这部分内容本身并不会被计入最终的匹配结果中。正向前瞻(?=):/\d(?=px)/仅会匹配紧跟在px前面的数字(例如"100px"中会匹配到100)。负向前瞻(?!):/\d(?!px)/则只匹配后面不是紧跟px的数字。正向后顾(?<=):/(?<=\$)\d+/仅匹配紧跟在$符号后面的数字(例如"$100"中会匹配到100)。负向后顾(?<!)则正好相反,用于排除特定前缀的情况。这类断言技巧在密码强度校验、格式化文本提取等场景中经常被用来精确判断某个字符是否存在于特定位置附近。

06

6. 正则表达式的性能优化技巧

结构过于复杂的正则表达式很容易引发严重的性能问题,因此在编写时应尽量做到具体和精确(例如优先使用[a-z]+而非模糊的.*)。可以把不必要的捕获分组统一替换为非捕获分组(?:...),从而略微提升匹配效率。为了减少引擎在匹配失败时的回溯(backtracking)次数,建议在合适的场景下使用惰性量词(*?、+?)来代替默认的贪婪量词(*、+)。当需要处理非常大的文本内容时,简单的字符串方法(如indexOf、startsWith)在性能上往往会比正则表达式更具优势。此外,应当提前编译好正则表达式对象并重复复用,避免在循环体内反复创建new RegExp实例。最后需要特别警惕ReDoS(正则表达式拒绝服务)攻击风险,切勿将未经处理的用户输入内容直接拼接后作为正则表达式模式使用。

常见问题

支持哪些正则表达式语法?
该工具使用JavaScript的正则表达式引擎,支持g/i/m/s/u/y等标志位,以及捕获组、前瞻/后顾断言等语法。
输入的模式和字符串会被发送到外部吗?
不会,匹配处理在浏览器内以客户端方式执行,不会发送到服务器。
在哪里可以查看常用模式?
提供了电子邮件、电话号码、URL、日期等常用正则表达式模式按钮,点击即可立即测试。
如何查看捕获组的结果?
在匹配结果区域,除了完整匹配的字符串外,还可以查看按括号指定的各个捕获组结果。
正则表达式运行速度过慢该怎么办?
过度贪婪的量词(.*、.+)或嵌套的重复模式可能因回溯而导致性能下降。建议尽量使用具体的字符类,并将不需要的捕获组改为非捕获组。