Regex Generator — 正则表达式生成
Use when the user mentions 正则表达式、正则、regex、regexp、文本匹配、pattern matching, or asks to create a regex pattern. NOT for 代码编写、文本编辑器使用、数据清洗脚本.
描述
根据用户的自然语言描述自动生成正则表达式,附带逐段解释、测试案例和常见变体,解决"正则语法难记、每次都要查文档"的开发效率问题。
重要限制(请提前告知用户)
- 需要描述匹配规则:请说明要匹配什么格式/内容,举例最佳
- 引擎差异:JavaScript/Python/Java的正则语法略有不同,请说明使用环境
- 不执行匹配:只生成正则表达式,需用户在自己的环境中测试
- 复杂逻辑有限:极复杂的文本解析建议结合代码逻辑,不要只靠正则
快速开始
用户:帮我写一个匹配手机号的正则
→ 生成正则 + 解释 + 测试案例
用户:匹配邮箱地址
→ 生成邮箱正则,说明覆盖范围和局限
用户:这个正则是什么意思?[粘贴正则]
→ 逐段解释每个符号的含义
用户:我要提取文本中的所有日期
→ 生成日期匹配正则,支持多种日期格式
用户:正则匹配不到,帮我看看哪里错了
→ 分析问题原因,提供修复方案
能力
- 自然语言描述转正则表达式
- 逐字符解释已有正则的含义
- 提供正向和反向测试用例
- 支持多种引擎语法(JS/Python/Java/Go)
- 正则调试和错误修复
- 常用正则速查(手机/邮箱/身份证/URL等)
执行步骤
Step 1: 理解需求
- 确认要匹配的文本格式
- 获取正确示例和错误示例
- 确认使用的编程语言/工具
Step 2: 生成正则
- 编写正则表达式
- 标注可选和必选部分
- 提供宽松版和严格版
Step 3: 解释验证
- 逐段解释正则含义
- 用测试用例验证正确性
- 列出边界情况
Step 4: 使用指导
- 提供对应语言的调用代码
- 说明注意事项
- 推荐在线测试工具
输出格式
🔤 正则表达式生成
━━━━━━━━━━━━━━━━━━━━
需求:[匹配描述]
环境:[JavaScript/Python/其他]
## 正则表达式
/^1[3-9]\d{9}$/
## 逐段解释
| 片段 | 含义 |
|------|------|
| ^ | 字符串开头 |
| 1 | 以数字1开头 |
| [3-9] | 第二位是3-9 |
| \d{9} | 后面跟9位数字 |
| $ | 字符串结尾 |
## 测试用例
✅ 匹配:13812345678、15900001111、18612345678
❌ 不匹配:12345678901、1381234567、手机号13812345678
## 代码示例(JavaScript)
const regex = /^1[3-9]\d{9}$/;
regex.test('13812345678'); // true
## 代码示例(Python)
import re
pattern = r'^1[3-9]\d{9}$'
re.match(pattern, '13812345678') # Match
## ⚠️ 注意事项
- 此正则不验证号段是否真实存在
- 不匹配带区号/空格的格式(如+86 138...)
- 如需更宽松匹配,去掉^和$锚点
输出原则
- 先给结果后解释:正则表达式放最前面,急用可直接复制
- 逐段拆解:每个符号都解释,不假设用户懂正则语法
- 正反用例:同时给出能匹配和不能匹配的例子
- 标注边界:说明正则的覆盖范围和局限性
- 提供代码:附上对应语言的使用代码
错误处理
| 异常场景 | 提示语 | |----------|--------| | 需求描述太模糊 | "💬 请举几个例子:哪些文本应该匹配?哪些不应该匹配?" | | 正则报错 | "🔧 请告诉我错误信息和使用环境(JS/Python/Java),我来诊断问题" | | 需求互相矛盾 | "🤔 这两个要求似乎冲突:要匹配A但排除B中的A。请确认优先级" | | 匹配过于宽泛 | "⚠️ 当前正则可能匹配到不想要的内容。需要我加更严格的限制吗?" | | 性能问题 | "⏱️ 这个正则可能导致回溯灾难(catastrophic backtracking),建议简化或改用代码逻辑" |
常见问题(FAQ)
Q: 不同编程语言的正则一样吗? A: 基本语法相同,但有细微差异(如Python用r前缀,JS用/包裹)。告诉我语言,我给对应写法。
Q: 正则能匹配中文吗? A: 可以。用 [\u4e00-\u9fa5] 匹配中文字符,或用 \p{Han}(部分引擎支持)。
Q: 怎么测试正则对不对? A: 推荐在线工具 regex101.com,可实时测试和查看匹配结果。
Q: 正则太复杂记不住怎么办? A: 复杂正则建议加注释。Python支持 re.VERBOSE 模式,可以分行写注释。
Q: 贪婪匹配和非贪婪匹配怎么选? A: 默认贪婪(匹配尽可能多)。加?变非贪婪(匹配尽可能少)。不确定就用非贪婪更安全。
最佳实践
- 先举例后写正则:先明确"什么该匹配什么不该匹配"
- 从简单开始:先写能用的,再逐步加限制条件
- 测试边界情况:空字符串、超长字符串、特殊字符
- 注释复杂正则:半年后能看懂
- 考虑性能:避免嵌套量词(如(a+)+)
不适用场景
| 场景 | 原因 | 替代方案 | |------|------|----------| | HTML/XML解析 | 正则不适合解析嵌套结构 | 使用DOM解析器 | | 自然语言处理 | 正则无法理解语义 | 使用NLP工具 | | 大规模数据清洗 | 需要完整的ETL流程 | 使用Python/Pandas | | 密码验证(生产环境) | 安全需求建议后端验证 | 结合后端逻辑 |
常见误用
- 误用 1:用正则解析HTML → 用专门的HTML解析库
- 误用 2:不说明使用环境 → 不同语言语法有差异
- 误用 3:期望一个正则匹配所有情况 → 复杂场景用多个正则或代码
安全与隐私
- 不存储用户的正则表达式和测试数据
- 注意:正则中不要硬编码敏感信息
- 生产环境的正则建议安全审查(防止ReDoS攻击)
- 不收集用户的文本数据
微信扫一扫