我正在尝试根据这些规范提出一个匹配比特币地址的正则表达式:
比特币地址或简称地址是27-34个字母数字字符的标识符,从数字1或3开始[...]
我认为它看起来像这样
/^[13][a-zA-Z0-9]{27,34}/
Run Code Online (Sandbox Code Playgroud)
事实是,我对正则表达式并不擅长,而且我没有找到一个单一的来源来确认这不会产生假阴性.
我在网上发现了一个^1[1-9A-Za-z][^OIl]{20,40},但我甚至不知道这个[^OIl]部分是什么意思,它似乎与3比特币地址不匹配.
run*_*eks 55
^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$
Run Code Online (Sandbox Code Playgroud)
将匹配以任一开头的字符串1或3和,之后,在25至34个字符或者AZ,AZ的,或0-9,但不包括l,I,O和0(在一个比特币地址不是有效的字符).
Fra*_*coA 14
^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$
Run Code Online (Sandbox Code Playgroud)
比特币地址是
O,大写字母I,小写字母l和数字0从不用于防止视觉模糊.Thi*_*ter 13
[^OIl]匹配任何不是O,I或l的字符.正则表达式中的问题是:
$最后没有,所以它匹配任何以BC地址开头的字符串.{27,34}- 应该是{26,33}但是,正如评论中所提到的,正则表达式不是验证比特币地址的好方法.
根据runeks和Erhard Dinhobl的回答,我得到了接受 bech32 和遗产的答案:
\b(bc(0([ac-hj-np-z02-9]{39}|[ac-hj-np-z02-9]{59})|1[ac-hj-np-z02-9]{8,87})|[13][a-km-zA-HJ-NP-Z1-9]{25,35})\b
Run Code Online (Sandbox Code Playgroud)
包括测试网地址:
\b((bc|tb)(0([ac-hj-np-z02-9]{39}|[ac-hj-np-z02-9]{59})|1[ac-hj-np-z02-9]{8,87})|([13]|[mn2])[a-km-zA-HJ-NP-Z1-9]{25,39})\b
Run Code Online (Sandbox Code Playgroud)
仅测试网:
\b(tb(0([ac-hj-np-z02-9]{39}|[ac-hj-np-z02-9]{59})|1[ac-hj-np-z02-9]{8,87})|[mn2][a-km-zA-HJ-NP-Z1-9]{25,39})\b
Run Code Online (Sandbox Code Playgroud)
^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$
Run Code Online (Sandbox Code Playgroud)
基于新的地址类型Bech32
| 归档时间: |
|
| 查看次数: |
21181 次 |
| 最近记录: |