跳到主内容
正则Regex文本处理

Regex 生成 Prompt:用自然语言生成和解释正则表达式

用自然语言描述匹配需求,AI 生成正则表达式并逐段解释语法含义,附测试用例和常见变体。再也不用对着正则发呆。适合 Cursor、Claude Code、ChatGPT 等 AI 编程工具使用。

适用:ClaudeCursorChatGPTGLM

用法

描述你要匹配/替换/提取什么内容,AI 生成正则并解释。

Prompt

你是一个正则表达式专家。请根据我的需求生成正则表达式。

## 需求

{{描述你要匹配什么,比如"匹配中国大陆手机号,1开头11位"}}

## 语言/环境

{{JavaScript / Python / Go / Java / grep / sed}}

## 要求

1. 生成正则表达式
2. 逐段解释每个部分的含义
3. 给出测试用例(匹配 + 不匹配)
4. 如果需求有歧义,列出假设
5. 如果有多种写法,给推荐方案 + 备选方案

## 输出格式

### 正则表达式
```
{{正则}}
```

### 逐段解释
| 部分 | 含义 |
|---|---|
| `^1` | 以 1 开头 |
| `[3-9]` | 第二位 3-9 |
| `\d{9}` | 后面 9 位数字 |
| `$` | 结束 |

### 测试用例
| 输入 | 匹配? | 说明 |
|---|---|---|
| 13800138000 | ✅ | 标准手机号 |
| 12345678901 | ❌ | 第二位是 2,不合法 |
| 1380013800 | ❌ | 只有 10 位 |

### 使用示例
```{{语言}}
// JavaScript
const re = /^1[3-9]\d{9}$/;
console.log(re.test('13800138000')); // true
```

### 注意事项
- {{边界 case}}
- {{性能提醒(如果有回溯风险)}}

常见场景

  • 邮箱/手机号/身份证验证
  • URL 解析
  • 日志提取
  • 代码重构(批量替换)
  • 数据清洗

一个值得警惕的坑:灾难性回溯

AI 生成的正则能匹配 ≠ 安全。最危险的是灾难性回溯(ReDoS)——某些正则在特定输入下会指数级爆炸,把 CPU 打满。

典型危险写法:嵌套量词 (a+)+(.*)*(\d+)*$。比如校验邮箱时写成 ^([a-zA-Z0-9]+)*@,遇到 aaaaaaaaaaaaaaaa!(长串后跟非法字符)会卡死。

所以在 prompt 里追加一句很有用:

"检查这个正则是否有灾难性回溯(ReDoS)风险,特别是嵌套量词。如果有,给一个安全的等价写法。"

另外,能用字符串方法(startsWith/includes/split)解决的,就别上正则——正则的可维护性永远是负债。

为什么有效

  • 要求解释而不只是给表达式:正则的可维护性几乎全在「能不能读懂」,一个没人看懂的正则等于一个没人敢改的 bug 源。
  • 要求给出灾难性回溯风险:嵌套量词是 ReDoS 的主要来源,不显式问 AI 就不会主动说。
  • 要求给测试用例:正则的正确性只能靠正例 + 反例集合证明,自然语言描述天生有歧义。

进阶(自动化)

把生成的正则和用例直接固化成单测,避免下次被「顺手改坏」:

# 用 AI 生成的用例跑一遍,确认正反例都通过
node -e "const re = /<YOUR_RE>/; const ok = ['a@b.com']; const bad = ['a@@b'];
ok.forEach(s => console.assert(re.test(s), 'should match ' + s));
bad.forEach(s => console.assert(!re.test(s), 'should NOT match ' + s));"

反例(AI 默认会写的烂版本)

默认输出^([w.]+)@([w]+.)+[w]{2,}$——嵌套量词 ([w]+.)+ 存在灾难性回溯风险,且没说明它其实不支持带引号的本地部分。

加了 prompt 之后:给出表达式 + 逐段解释 + 明确「长输入下存在回溯风险,建议改用非贪婪或拆成两步校验」+ 6 条正例 4 条反例。

延伸阅读

相关对比

Augment Code vs Cursor:企业 AI 编程怎么选?Context Engine vs AI IDE 对比

Augment Code vs Cursor 2026 选型对比:Context Engine 全仓索引的企业 AI 平台 vs SpaceX 收购的 AI IDE 天花板,从形态、Context 覆盖、长任务、价格、合规、中文支持和适合人群 8 个维度判断,帮你选对企业 AI 编程工具。

Cursor vs Aider:GUI IDE 还是 CLI?2026 对比

Cursor vs Aider 2026 选型对比:GUI IDE vs Git 原生 CLI,从 Composer vs Architect 双模型、Tab 补全、多模型 BYOK、价格计费、开源与否和适合人群判断,帮开发者选对。Cursor 是闭源 VS Code fork 月费 $20,Aider 是开源 Apache-2.0 CLI 自带 API key。

Cursor vs Claude Code:什么时候用哪个?(2026 实测选型)

Cursor 和 Claude Code 到底怎么选?一句话结论 + 决策树 + 价格实测 + 国内可用性对比。GUI 派选 Cursor,终端长任务派选 Claude Code,最优解其实是共存。

Cursor vs GitHub Copilot:AI IDE 还是插件?2026 对比

Cursor vs GitHub Copilot 2026 选型对比:AI 原生 IDE vs IDE 插件,从 Composer vs Agent Mode、Tab 补全、多模型、AI Credits 计费、企业版和适合人群判断,帮开发者选对。Cursor 是 VS Code fork 重写交互层,Copilot 是 VS Code 插件继承原生体验。两家都已切 usage 制。

Cursor vs Kiro:「对话式改代码」与「规格驱动开发」怎么选(2026)

Cursor 代表对话式、迭代式的 AI 编码;Kiro 主打 spec-driven,先写需求与设计文档再生成代码。一句话结论 + 决策树 + 价格对比:要速度与手感选 Cursor,要过程可控与可追溯选 Kiro。

Cursor vs Trae:国内开发者怎么选?价格、模型、网络和真实体验对比

Cursor vs Trae 2026 选型对比:从价格、模型能力、国内访问、Builder/Composer、多文件改写、MCP 生态和适合人群判断,帮国内开发者决定继续用 Cursor,还是切到字节 Trae。

相关评测