Address
用於驗證 xpubs 的正則表達式
我想知道是否有人可以幫助我使用正則表達式來驗證所有類型的 xpub,例如:
- xpub(主網 P2PKH 或 P2SH)
- ypub(P2SH 中的主網 P2WPKH)
- Ypub(P2SH 中的主網 P2WSH)
- zpub(主網 P2WPKH)
- Zpub(主網 P2WSH)
- tpub(測試網 P2PKH 或 P2SH)
- upub(P2SH 中的測試網 P2WPKH)
- Upub(P2SH 中的測試網 P2WSH)
- vpub(測試網 P2WPKH)
- Vpub(測試網 P2WSH)
謝謝你。
以下正則表達式應用於驗證字元串是否以
xpub
,ypub
,Ypub
,zpub
,Zpub
,tpub
,upub
,或之一開頭Upub
,後跟 79-108 個字元,這些字元是(Base58 字母表)之一,這與您可以驗證帶有正則表達式的 BIP32 鍵:vpub``Vpub``123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
^([xyYzZtuUvV]pub[1-9A-HJ-NP-Za-km-z]{79,108})$
(嘗試:https ://regexr.com/6cn9a )
如果您想接受可選包含
?c={timestamp}&h={bip}
參數的 BIP32 密鑰,請(?:(?:$|\?)((?!.*&c=)c=\d{10}|(?!.*&h=)h=bip\d{2,3})(?:(?=(?:&c=|&h=))&(c=\d{10}|h=bip\d{2,3}))?)?
在末尾添加,如下所示:^([xyYzZtuUvV]pub[1-9A-HJ-NP-Za-km-z]{79,108})(?:(?:$|\?)((?!.*&c=)c=\d{10}|(?!.*&h=)h=bip\d{2,3})(?:(?=(?:&c=|&h=))&(c=\d{10}|h=bip\d{2,3}))?)?$
(嘗試:https ://regexr.com/6cn9s - 這將檢查
c
是否為有效的 10 位 UNIX 時間戳,h
是否bip{2-3 digit number}
每個參數最多有一個,並允許參數按任意順序排列。)但是,測試 BIP32 密鑰是否有效的更準確方法是簡單地使用 Base58Check 對其進行解碼(類似於正常比特幣地址的編碼方式),驗證校驗和是否有效,並檢查解碼數據的長度是否準確78 字節。