【发布时间】:2017-06-26 10:22:44
【问题描述】:
是否可以定义一次正则表达式并重新使用它?我有一些非常复杂的正则表达式,我想将它们用作模式中各种不同对象的大量属性的 value 模式。对此进行复制粘贴看起来像是在进一步寻找麻烦,但我似乎无法在任何地方找到合适的重用示例。
削减说明我想要做什么的架构。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"patterns": {
"fqdn_or_ipaddress": "(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\\.)+[a-zA-Z]{2,63}$)||(((?:^[0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])$)|(^\\*$))",
},
"properties": {
"server_hostname" : {
"type":"string",
"pattern": {"#ref", "#/patterns/address"},
},
"proxy_hostname" : {
"type":"string",
"pattern": {"#ref", "#/patterns/address"},
}
}
}
这里不验证http://www.jsonschemavalidator.net/,因为“模式”不是字符串。难道这是一个洞在重用。我看过 patternProperties,但这似乎解决了完全不同的用例。
【问题讨论】:
标签: json jsonschema