正则表达式生成器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/cn-regex-generator。
技能介绍
正则表达式难在哪
写正则的人很少是"不会写",而是"记不住"。\d{9} 是数字,^ 和 $ 是锚点,[3-9] 是区间——单个符号都不难,难的是把它们组合起来描述一类文本。
具体困难有这么几个:
- 方言差异:同一个
\d,在 Java 里默认只匹配 ASCII 数字,在 Python 里还能匹配 Unicode 数字。直接从博客抄一段正则过来,换个引擎就可能静默出错。 - 边界条件:
1[3-9]\d{9}看着简单,但少写一个^,21381234567也会被匹配上;输入里多了没处理的空格,整条规则直接失效。 - 看懂比写更难:接手别人的代码,看到
(?<=[A-Z])\w{4,8}时,多数人会绕开它改逻辑,而不是读懂它。
这个技能怎么工作
它把"描述需求 → 得到正则"做成了固定的四步流程:
- 需求描述:用自然语言说清是要匹配、提取还是校验哪类文本。
- 正则构建:生成表达式,并补齐容易被遗漏的锚点和转义。
- 测试用例:给出应当匹配成功的样本,以及应当匹配失败的反例。没有反例的验证基本等于没验证。
- 逐段解释:把
^1[3-9]\d{9}$拆成^、1、[3-9]、\d{9}、$分别说明含义。
方言方面支持 JavaScript、Python、Java 三种,默认按 JavaScript 处理,需要时显式指定。方言差异是这里最容易埋 bug 的地方——同一个模式在不同引擎里语义并不完全一致。
适用边界
- 适合结构规整、能用字符类和量词描述的文本:手机号、邮箱、日期、金额、文件名。
- 不适合需要语义理解的场景,比如"找出投诉中情绪激烈的话",那是分类问题,不是模式匹配问题。
- 需求过于复杂时,技能会提示拆成多个子问题处理,而不是硬生成一条长表达式。两百多字符的正则基本不可维护。
- 返回的用例是起点而非完备的测试套件,正式接入前建议在自己的数据上再跑一遍。
使用场景
- 后端给接口写手机号字段校验时,需要拿到带边界锚点的正则和一批应匹配、不应匹配的测试用例
- 爬虫拿到混杂正文后要提取日期和编号,不想自己拼长表达式反复试错
- 新人接手旧代码,需要逐段看懂别人写好的长正则分别匹配什么
适合人员
- 后端工程师:给接口加字段校验,需要能指定语言方言的可用正则
- 数据处理开发者:清洗或抽取不规范文本,需要测试用例来验证提取结果
- 接手遗留代码的工程师:需要读懂他人写好的复杂匹配逻辑