十六进制编码的比特币紧凑大小整数的正则表达式/json架构模式

问题描述 投票:0回答:1

我正在为包含十六进制编码的比特币紧凑尺寸整数(又名可变长度整数,有时var_int)的列表数组构建一个json模式,后跟由紧凑尺寸表示的字节数整数

{
    "type":"array",
    "prefixItems": [
      {"title":"bitcoin_CSI","type":"string","pattern":"[0-9a-f]{2}|fd[[0-9a-f]{4}|fe[[0-9a-f]{8}|ff[[0-9a-f]{16}"},
      {"title":"bitcoin_bytes","type":"string",pattern":"[0-9a-f]"}
    ]
}

目前我的正则表达式模式

[0-9a-f]{2}|fd[[0-9a-f]{4}|fe[[0-9a-f]{8}|ff[[0-9a-f]{16}
无法确定第一个字节是否是<=fc for the first option (where the length must be 2 hex chars). 有更好的方法吗?

我还想知道在 json 模式中是否有一种方法可以让

bitcoin_bytes
模式也检查compact-size-int 的长度。类似于
[0-9a-f]{int(bitcoin_CSI)*2}

regex jsonschema bitcoin varint
1个回答
0
投票

我必须颠倒术语的顺序,以便它首先检查

ff

(为了方便这里使用大写)

例如

FF[[0-9A-F]{16}|FE[[0-9A-F]{8}|FD[[0-9A-F]{4}|[0-9A-F]{2}

匹配

FF00E40B5402000000

FEA0860100

FDE803

64
© www.soinside.com 2019 - 2024. All rights reserved.