regex pattern · ready to copy
Regex for matching Bitcoin addresses (legacy + bech32)
Match P2PKH (`1...`), P2SH (`3...`), and Bech32 (`bc1...`) addresses.
intermediate
javascript / pcre / python4 use cases
The pattern
(?:[13][a-km-zA-HJ-NP-Z1-9]{25,34}|bc1[a-z0-9]{39,59})
Test cases
| Input | Result |
|---|---|
| 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa | ✓matches |
| 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy | ✓matches |
| bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq | ✓matches |
| 0x123abc (Ethereum) | ✗rejects |
| 1tooshort | ✗rejects |
| bc1invalid | ✗rejects |
Edge cases & caveats
Doesn't verify checksum — invalid-checksum addresses match. ALWAYS verify with bech32 / base58check decoder before treating as a valid address. Testnet has different prefixes (`m`, `n`, `2`, `tb1`).
Common use cases
- chat moderation (crypto spam detection)
- wallet log scraping
- compliance scanning
- phishing pattern detection
Try variations against your data
regexlab is a free in-browser tester with side-by-side match highlighting, group inspector, and named-capture export to JS/Python/PCRE.
Open regexlab