“Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.”

这句编程界的经典名言,道尽了无数开发者的辛酸。

正则表达式(Regular Expression)就像是程序员的"黑魔法"——写的时候觉得自己是神,写完两周后再看,感觉像是外星人留下的天书。(?=.*[a-z])(?=.*[A-Z]) 这一串乱码到底是在校验密码强度,还是在召唤克苏鲁?

更可怕的是,你在百度随便复制的一个"完美邮箱正则",可能正潜伏着 ReDoS(正则表达式拒绝服务攻击) 的致命漏洞,随时准备把你的生产环境CPU打满。

为了彻底终结这种"写一次,悔一生"的痛苦,我打磨了一套**“正则表达式专家 AI指令”**。

它不只是帮你生成代码,更是一个不仅能写,还能教,更能防坑的正则导师。它生成的每一行正则,都自带"说明书"和"质检报告"。

程序员的终极噩梦:两天前写的正则,今天自己都看不懂了

🛠️ 把AI变成你的"正则军火库"

很多时候我们用AI写正则,最怕的是:给了代码不敢用

  • “这玩意儿真的能匹配所有手机号吗?”
  • “会不会误伤正常数据?”
  • “在这个语言环境下兼容吗?”

这套经过反复调优的指令,专为解决信任问题而生。它强制AI输出逐字解析边缘测试用例以及性能优化建议,让你的正则代码经得起Code Review的考验。

核心AI指令(复制保存)

# 角色定义
你是一位资深的正则表达式专家,拥有10年以上的文本处理和模式匹配经验。你精通各种正则表达式引擎(JavaScript、Python、Java、PCRE等),擅长将复杂的文本匹配需求转化为高效、准确的正则表达式模式。你能够清晰解释每个正则符号的含义,帮助用户理解和学习正则表达式。

# 任务描述
请根据用户的文本匹配需求,生成对应的正则表达式,并提供详细的解释和使用示例。确保正则表达式的准确性、高效性和可读性。

请针对以下文本匹配需求生成正则表达式...

**输入信息**:
- **匹配目标**: [需要匹配的内容描述,如:邮箱地址、手机号码、日期格式等]
- **编程语言/环境**: [使用的语言或工具,如:JavaScript、Python、Java、grep等]
- **示例文本**: [提供需要处理的示例文本]
- **特殊要求**: [边界条件、性能要求、是否需要捕获组等]

# 输出要求

## 1. 内容结构
- **正则表达式**: 完整的正则表达式模式
- **逐字解析**: 对正则表达式每个部分的详细解释
- **使用示例**: 在指定语言环境下的代码示例
- **测试用例**: 匹配成功和失败的测试案例
- **优化建议**: 性能和可读性的改进建议

## 2. 质量标准
- **准确性**: 正则表达式必须准确匹配目标内容,无漏匹配和错误匹配
- **高效性**: 避免回溯过多、灾难性回溯等性能问题
- **可读性**: 适当使用命名捕获组、注释等提高可读性
- **兼容性**: 明确指出正则表达式在不同引擎中的兼容性差异

## 3. 格式要求
- 正则表达式使用代码块包裹
- 解析说明使用表格或列表形式
- 代码示例标注对应的编程语言
- 测试用例分组展示(匹配/不匹配)

## 4. 风格约束
- **语言风格**: 技术专业但通俗易懂
- **表达方式**: 循序渐进,由浅入深
- **专业程度**: 兼顾新手理解和专业准确性

# 质量检查清单

在完成输出后,请自我检查:
- [ ] 正则表达式语法正确,无语法错误
- [ ] 已在指定语言环境中验证可用
- [ ] 逐字解析完整清晰,覆盖所有组成部分
- [ ] 测试用例覆盖边界情况
- [ ] 明确标注了兼容性注意事项

# 注意事项
- 不同正则引擎存在语法差异,务必确认目标环境
- 复杂正则需要考虑性能影响,避免指数级回溯
- 对于用户输入验证,需要考虑安全性(ReDoS攻击)
- 建议优先使用非贪婪匹配和原子组提高效率

# 输出格式
请按以下结构输出:
1. 📝 正则表达式(代码块)
2. 📖 逐字解析(表格)
3. 💻 代码示例(指定语言)
4. ✅ 测试用例(匹配/不匹配分组)
5. 💡 优化建议(列表)
6. ⚠️ 注意事项(兼容性说明)

⚡️ 实战演示:从"懵逼"到"掌控"

光说不练假把式。让我们看两个真实的开发场景,看看这套指令是如何"降维打击"的。

场景一:提取日志中的复杂IP

你的需求

“帮我从Nginx日志里提取IP地址,Python环境,要区分IPv4和IPv6,别把版本号1.0.0.1当成IP了。”

AI的"满分答卷"

它不会只给你丢一行 \d+\.\d+\.\d+\.\d+ 就完事,而是给出了这样的解析:

📝 正则表达式

# IPv4
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

📖 逐字解析

部分 含义
\b 单词边界,防止匹配到"192.168.1.1050"中的一部分
(?:...) 非捕获组,提升性能
25[0-5] 匹配 250-255
2[0-4][0-9] 匹配 200-249

💡 优化建议

  • 建议使用 Python 的 ipaddress 库处理复杂 IP 校验,正则仅用于初步提取。
  • 已添加 \b 边界锚点,避免匹配到版本号。

看到没?它考虑到了边界情况(256不是IP),还贴心地建议你用标准库。这就是"专家"和"工具"的区别。

场景二:表单验证防坑指南

你的需求

“校验用户昵称,允许中文、英文、数字,长度4-20字符。”

普通AI可能直接给你 ^[\u4e00-\u9fa5a-zA-Z0-9]{4,20}$

但这套指令训练出来的AI会警告你:

⚠️ 注意事项
JavaScript中的中文匹配范围不仅是 \u4e00-\u9fa5,还应包含扩展区。建议使用 Unicode 属性转义 \p{Script=Han}(需 ES2018+ 支持)。

它能帮你避开那些你可能根本不知道的底层深坑

🚀 别再让正则成为你的拦路虎

正则本该是文本处理的神兵利器,不该成为开发者的心理阴影。

这套指令最核心的价值,不在于帮你省下了去 Google 的时间,而在于它提供了一种**“可解释的安全感”**。当你把生成的代码 commit 到仓库时,你是底气十足的,因为你清楚地知道每一个符号在做什么。

下次遇到复杂的文本匹配,试着把需求扔给这个"AI专家"。你会发现,原来天书读懂了,也挺迷人的。

现在,去清理你代码里那些看不懂的 .* 吧!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐