如何在Sanity中为slug类型添加仅允许小写字符的校验规则
Sanity 小写Slug校验实现方案
直接使用Sanity slug字段提供的custom自定义验证规则,搭配正则匹配即可实现需求,完整配置如下:
1. 基础校验规则配置
在对应文档类型的schema定义中,修改slug字段的validation配置:
defineField({ name: 'slug', title: '页面路径标识(Slug)', type: 'slug', options: { source: 'title', // 可替换为你需要自动生成slug的来源字段 maxLength: 96, }, validation: (Rule) => Rule.required() .custom((slug) => { if (!slug?.current) return true // 正则匹配:仅允许小写字母、数字、半角横杠 const validSlugRegex = /^[a-z0-9-]+$/ return validSlugRegex.test(slug.current) ? true : 'Slug仅允许使用小写英文字母、数字和半角横杠,不可包含大写字母或其他特殊字符' }) .error() })
配置后只要slug值不符合规则,保存时就会弹出错误提示,直接阻止文档提交。
2. 可选:自动生成符合规则的Slug
如果要避免用户手动输入出错,可在slug的options中自定义slugify生成逻辑,点击生成按钮时直接输出符合小写要求的slug:
options: { source: 'title', maxLength: 96, slugify: (input) => input.toLowerCase() // 空格替换为横杠 .replace(/\s+/g, '-') // 移除非允许字符 .replace(/[^a-z0-9-]/g, '') // 截取最大长度 .slice(0, 96) },
内容的提问来源于stack exchange,提问作者Udders
相关产品推荐
相关产品推荐

