Use when the user mentions 正则表达式、正则、regex、regexp、文本匹配、pattern matching, or asks to create a regex pattern. NOT for 代码编写、文本编辑器使用、数据清洗脚本.
根据用户的自然语言描述自动生成正则表达式,附带逐段解释、测试案例和常见变体,解决"正则语法难记、每次都要查文档"的开发效率问题。
用户:帮我写一个匹配手机号的正则
→ 生成正则 + 解释 + 测试案例
用户:匹配邮箱地址
→ 生成邮箱正则,说明覆盖范围和局限
用户:这个正则是什么意思?[粘贴正则]
→ 逐段解释每个符号的含义
用户:我要提取文本中的所有日期
→ 生成日期匹配正则,支持多种日期格式
用户:正则匹配不到,帮我看看哪里错了
→ 分析问题原因,提供修复方案
🔤 正则表达式生成
━━━━━━━━━━━━━━━━━━━━
需求:[匹配描述]
环境:[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),建议简化或改用代码逻辑" |
Q: 不同编程语言的正则一样吗?
A: 基本语法相同,但有细微差异(如Python用r前缀,JS用/包裹)。告诉我语言,我给对应写法。
Q: 正则能匹配中文吗?
A: 可以。用 [\u4e00-\u9fa5] 匹配中文字符,或用 \p{Han}(部分引擎支持)。
Q: 怎么测试正则对不对?
A: 推荐在线工具 regex101.com,可实时测试和查看匹配结果。
Q: 正则太复杂记不住怎么办?
A: 复杂正则建议加注释。Python支持 re.VERBOSE 模式,可以分行写注释。
Q: 贪婪匹配和非贪婪匹配怎么选?
A: 默认贪婪(匹配尽可能多)。加?变非贪婪(匹配尽可能少)。不确定就用非贪婪更安全。
| 场景 | 原因 | 替代方案 |
|---|---|---|
| ------ | ------ | ---------- |
| HTML/XML解析 | 正则不适合解析嵌套结构 | 使用DOM解析器 |
| 自然语言处理 | 正则无法理解语义 | 使用NLP工具 |
| 大规模数据清洗 | 需要完整的ETL流程 | 使用Python/Pandas |
| 密码验证(生产环境) | 安全需求建议后端验证 | 结合后端逻辑 |
共 1 个版本