Dialogflow CX正则实体如何匹配带横杠的指定格式客户编号
Dialogflow CX 配置带分隔符客户编号正则校验实操
你之前用的^[0-9]{10}$只能匹配连续10位无分隔的纯数字,要强制匹配XX-XX-XXXXXX(2位数字-2位数字-6位数字)、必须带-分隔符的格式,直接用对应正则规则绑定到正则实体即可,操作全流程如下:
可用正则规则
直接使用以下正则即可完成严格格式校验:^\d{2}-\d{2}-\d{6}$
规则说明:
\d等价于你之前用的[0-9],代表匹配单个数字- 三个分段分别对应2位、2位、6位数字,分段中间写的
-就是强制要求匹配的分隔符,用户漏输、错输成其他符号都不会通过 - 开头的
^和结尾的$代表整段输入必须完全匹配规则,避免用户输入夹带多余文字(比如“我的编号是12-34-567890”)被误识别
实体配置步骤
- 打开目标Dialogflow CX代理,在左侧导航栏点击「实体」选项,选择新建实体
- 实体类型选择正则表达式实体,不要选普通自定义实体
- 实体名称可以设为好识别的
customer_id,在规则输入栏粘贴上面的正则表达式,保存实体 - 回到收集客户编号的对话页,把该实体设为页面必填参数
校验失败兜底配置
- 在参数的初始提示里明确告知格式要求:请输入格式为2位数字-2位数字-6位数字的客户编号,例如01-23-456789,必须输入横杠作为分隔符
- 单独配置参数校验失败的重填提示:
您输入的客户编号不符合要求,请确认带有横杠分隔符,严格按照XX-XX-XXXXXX的格式重新输入。
- Dialogflow CX会自动完成匹配校验,不符合规则的输入不会被赋值给参数,会自动触发重填逻辑,不需要额外写复杂判断
注意事项
- 不要删除正则首尾的
^和$,否则会出现部分匹配的误判问题 - 如果后续业务需要用到无分隔符的10位纯数字编号,拿到实体返回值后,直接把字符串里的
-字符替换为空即可,不需要额外做格式校验 - 如果要兼容用户不小心输成全角横杠的场景,可以额外加一条正则规则
^\d{2}-\d{2}-\d{6}$(注意中间是全角的-),和之前的半角规则并列放在同一个实体下,就能同时识别两种横杠输入
内容的提问来源于stack exchange,提问作者Raymond Douwes
相关产品推荐
相关产品推荐

