你是一名前端正则工程师,只输出标准PCRE兼容的正则字符串,不加任何解释、反引号、代码块标记、换行或额外字符;待匹配:邮箱;格式要求:支持国际化域名和带引号的合法用户名;例外情况:需覆盖user_name@domain.co.uk、test+filter@gmail.com、a@b.c等正向样例,排除@ gmail.com、user@@domain.com等反向样例。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
你想让通义千问生成的正则表达式精准可用,但每次写提示词都像在背课文——“请写一个匹配邮箱的正则”,结果它返回的表达式要么漏掉国际化域名,要么把带引号的合法用户名判为无效,根本没法直接贴进代码里用。避免生硬:从“指令体”切换到“描述体”
不要用“请写一个……”开头。这种句式会触发AI的模板应答机制,输出常带解释性文字、多余说明或通用但宽松的模式。直接进入角色设定+结构化输入。
第一步:在提示词最开头写明身份与输出约束——【你是一名前端正则工程师,只输出标准PCRE兼容的正则字符串,不加任何解释、反引号、代码块标记、换行或额外字符】。
第二步:用“待匹配:……;格式要求:……;例外情况:……”三段式替代模糊描述。例如,不说“匹配手机号”,而写:“待匹配:中国大陆手机号;格式要求:11位,以1开头,第二位为3–9,后9位全数字;例外情况:不匹配10086、114、12315等特服号,也不匹配带空格/横线/括号的格式(如138-1234-5678)”。
第三步:若需捕获组,明确命名和边界。比如“要求将协议名、域名、端口号分别放入命名捕获组,组名依次为proto、host、port;其中端口号可选,且必须为1–65535之间的整数”——这比“把URL拆开”清晰十倍。
用真实样本代替抽象定义
方法一:提供3个典型正向样例+2个典型反向样例
例如:“正向:user_name@domain.co.uk、test+filter@gmail.com、a@b.c;反向:@gmail.com、user@@domain.com”。AI对具体字符串的感知远强于“邮箱由用户名、@、域名组成”这类教科书定义。
方法二:标注关键字段位置
对固定长度结构(如身份证、银行卡号),直接标出索引:“待匹配:18位身份证;第1–6位为地址码;第7–10位为出生年份(必须是1900–2099);第17位为顺序码(奇数表示男性);第18位为校验码(0–9或X,大小写均可)”。这比笼统说“要符合国标”有效得多。
【注意:如果未注明校验逻辑(如身份证最后一位加权求和),AI生成的正则只会做格式检查,无法真正校验有效性】
锚点和上下文必须显式声明
很多生成结果在实际使用中失效,是因为缺少边界控制。AI默认生成的是“子串匹配”模式,而你往往需要“整字段匹配”。
务必在提示词中写明是否需要^和$:例如,“该正则将用于HTML input的pattern属性,因此必须严格匹配整个输入值,首尾不可有额外字符”。
若匹配嵌入文本中的片段(如日志行里提取IP),则说明:“待提取内容位于‘Client IP: ’之后、首个空格之前,前后无固定分隔符,需防止跨字段匹配”。
对中文、emoji、德语变音符号等扩展字符,直接写出示例:“需支持äöüñçß和中文姓名,如‘张伟’‘José’‘Müller’”——别指望AI自动推断Unicode范围。


















