Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RegEx to match Bitcoin addresses?

Tags:

regex

bitcoin

I am trying to come up with a regular expression to match Bitcoin addresses according to these specs:

A Bitcoin address, or simply address, is an identifier of 27-34 alphanumeric characters, beginning with the number 1 or 3 [...]

I figured it would look something like this

/^[13][a-zA-Z0-9]{27,34}/ 

Thing is, I'm not good with regular expressions and I haven't found a single source to confirm this would not create false negatives.

I've found one online that's ^1[1-9A-Za-z][^OIl]{20,40}, but I don't even know what the [^OIl] part means and it doesn't seem to match the 3 a Bitcoin address could start with.

like image 677
federico-t Avatar asked Feb 10 '14 17:02

federico-t


1 Answers

^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$ 

will match a string that starts with either 1 or 3 and, after that, 25 to 34 characters of either a-z, A-Z, or 0-9, excluding l, I, O and 0 (not valid characters in a Bitcoin address).

like image 71
runeks Avatar answered Sep 21 '22 20:09

runeks