Perl Regular Expressions to match a MD5 Hash?


Question

Recently programming in PHP, I thought I had a working Perl regular expression but when I checked it against what I wanted, it didn't work.

What is the right expression to check if something is a MD5 has (32 digit hexadecimal of a-z and 0-9).

Currently, I have /^[a-z0-9]{32}$/i

1
9
7/15/2010 5:56:39 PM

Accepted Answer

MD5:

/^[0-9a-f]{32}$/i

SHA-1:

/^[0-9a-f]{40}$/i

MD5 or SHA-1:

/^[0-9a-f]{32}(?:[0-9a-f]{8})?$/i

Also, most hashes are always presented in a lowercase hexadecimal way, so you might wanna consider dropping the i modifier.


By the way, hexadecimal means base 16:

0  1  2  3  4  5  6  7  8  9  A   B   C   D   E   F  = base 16
0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 = base 10

So as you can see it only goes from 0 to F, the same way decimal (or base 10) only goes from 0 to 9.

33
2/19/2010 2:18:49 AM

/^[a-f0-9]{32}$/i

Should work a bit better, since MD5 hashes usually are expressed as hexadecimal numbers.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon