DD
DevDash

Regex for Bitcoin Address

Regex Pattern

^(?:bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$

Bitcoin address (Legacy P2PKH, P2SH, or Bech32)

Quick Answer

The regex pattern for bitcoin address is `^(?:bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$`. Bitcoin address (Legacy P2PKH, P2SH, or Bech32). This works in JavaScript, Python, Ruby, PHP, Java, and most regex engines that support PCRE syntax.

Test Examples

InputResult
1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2✓ Matches
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy✓ Matches
bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4✓ Matches
0BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2✗ No match
notabitcoinaddress✗ No match
1234✗ No match

Code Examples

javascript

const regex = /^(?:bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$/;
const isValid = regex.test(value);

python

import re
pattern = r'^(?:bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$'
if re.match(pattern, value):
    print("valid")

ruby

pattern = /^(?:bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$/
if value =~ pattern
  puts "valid"
end

php

if (preg_match('/^(?:bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$/', $value)) {
    echo "valid";
}

java

String pattern = "^(?:bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$";
boolean isValid = value.matches(pattern);

Frequently Asked Questions

Related Regex Patterns

Want API access + no ads? Pro coming soon.