Address

用於驗證 xpubs 的正則表達式

  • January 4, 2022

我想知道是否有人可以幫助我使用正則表達式來驗證所有類型的 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 字節。

引用自:https://bitcoin.stackexchange.com/questions/111594