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

如何在JSON Schema模式的禁用字符集中添加句号?

解决JSON Schema中添加句号到禁用字符集的问题

首先明确:在正则的否定字符集[^...]中,.是普通字符,不需要转义——只有在字符集外,.才是匹配任意字符的通配符。

错误原因分析

  1. 第一次尝试的"pattern": "[^.\"{}:, \t]+"如果是写在JSON格式的Schema里,本身是合法的JSON语法(\"正确转义了双引号),出现解析错误大概率是编辑器或JSON校验工具的误判,或是编写时漏写了其他语法元素(比如逗号、括号)。
  2. 第二次尝试的"pattern": "[^\\.\"{}:, \t]+"在JSON中会被解析成正则[^.\"{}:, \t]+,和第一次的正则逻辑完全一致,因为字符集里的\.等价于.,所以验证效果没变化是正常的。

正确写法

情况1:JSON格式的Schema

直接在否定字符集中添加.即可,注意双引号必须转义:

"pattern": "[^.\"{}:, \t]+"

这个模式会匹配不包含.、"、{、}、:、,、空格、制表符的字符串,也就是这些字符都属于禁用范围。

情况2:YAML格式的Schema

如果你的JSON Schema是用YAML编写的,分两种字符串写法:

  • 双引号字符串:需要转义双引号,.直接写:
    pattern: "[^.\"{}:, \t]+"
    
  • 单引号字符串:无需转义双引号,写法更简洁:
    pattern: '[^."{}:, \t]+'
    

验证逻辑确认

确保你的Schema中pattern的使用逻辑正确:这个模式要求被验证的字符串完全由非禁用字符组成,如果字符串中包含.或其他禁用字符,ajv会抛出验证错误。如果你的需求是允许句号、禁用其他字符,那应该把.从否定字符集中移除,而非添加——这点要注意和你的需求匹配。

内容的提问来源于stack exchange,提问作者Setjmp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:48:08