You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:57:04