我想在JSON模式模式中为以下禁用字符集添加句点:
"pattern": "[^\"{}:, \t]+"
我的第一个想法是尝试:
"pattern": "[^\.\"{}:, \t]+"
但是这产生模式的解析错误。我的下一个想法是尝试:
"pattern": "[^\\.\"{}:, \t]+"
但是当我尝试验证我的YAML文件时,它没有所需的属性。我使用ajv作为我的JSON模式验证工具,我正在验证一个YAML文件。
nom7f22z1#
.不是字符类中的特殊字符,只有^、-和]是特殊字符,必须在字符类中转义。^和-甚至可以在字符类中使用而不转义,如果它们没有被放置在具有特殊含义的位置。您的成功尝试在字符类中添加了.和\。只需在字符类中添加.(不是在^之前),就可以了:
.
^
-
]
\
"pattern": "[^\"{}:., \t]+"
vlju58qv2#
正如axiac和Diego D所指出的,句点不需要在字符类中转义。然而,除了这个问题之外,模式没有匹配任何东西,因为它缺少前缀^和后缀$。最终的模式是:
$
"pattern": "^[^\"{}:., \t]+$"
2条答案
按热度按时间nom7f22z1#
.
不是字符类中的特殊字符,只有^
、-
和]
是特殊字符,必须在字符类中转义。^
和-
甚至可以在字符类中使用而不转义,如果它们没有被放置在具有特殊含义的位置。您的成功尝试在字符类中添加了
.
和\
。只需在字符类中添加
.
(不是在^
之前),就可以了:vlju58qv2#
正如axiac和Diego D所指出的,句点不需要在字符类中转义。然而,除了这个问题之外,模式没有匹配任何东西,因为它缺少前缀
^
和后缀$
。最终的模式是: