我正在为包含十六进制编码的比特币紧凑尺寸整数(又名可变长度整数,有时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}
?
我必须颠倒术语的顺序,以便它首先检查
ff
:
(为了方便这里使用大写)
例如
FF[[0-9A-F]{16}|FE[[0-9A-F]{8}|FD[[0-9A-F]{4}|[0-9A-F]{2}
匹配:
FF00E40B5402000000
FEA0860100
FDE803
64