I’ve gotten better and more comfortable with regular expressions as time has passed, and sometimes I spend timing wading through google for some common regular expressions I want to put into use, because I’m sure someone has already created it. Well, this isn’t always true (or easy to find), so I decided to collect some common Regular Expressions that may benefit readers. It’s a good idea to keep two things handy if you want to play with Regular Expressions yourself:
- A copy of the PHP book with a tab on pages 149 and 150 for common RegEx syntax
- A link to RegExPal, a color coding Regular Expression tester.
Common Regular Expressions:
Date and Time RegEx
Time format (no seconds):
HH:MM am/pm
^([1-9]|1[012]):(0[0-9]|[1-5][0-9])\s?(am|AM|pm|PM)$ |
Date in mm/dd/yyyy format, with an option for m/d/yyyy (exclude zero’s)
^(0?[1-9]|1[012])[ \/.-](0?[1-9]|[12][0-9]|3[01])[ \/.-](19|20)\d\d$ |
Date in dd/mm/yyyy format, with an option for d/m/yyyy (exclude zero’s)
^(0?[1-9]|[12][0-9]|3[01])[ \/.-](0?[1-9]|1[012])[ \/.-](19|20)\d\d$ |
Demographics RegEx
Age in years – max 122
^([0-9]|[1-9][0-9]|[1-9][0-1][0-9]|[1-9]2[0-2])$ |
Height in Feet and Inches:
6’3″
^([1-8]')?\s?([1-9]|1[01])$ |
Contact Information RegEx
U.S. Phone Number – parenthesis, periods, dashes, underscore, and spaces are allowed:
(123)456-7890
(123) 456 – 7890
( 123 )456-7890
1234567890
123.456.7890
123-456-7890
123 456 7890
^[\(\s\._-]*\d{3}[\)\s\._-]*\d{3}[\s\._-]*\d{4}$ |
U.S. Zip Code – 5 or 9 digit with dash
^\d{5}([\-]\d{4}){0,1}$ |
Email Address – (use preg_match) credit goes to fightingforalostcause.net
/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(? |
Currency RegEx
Currency – U.S. Dollars and Cents with commas for multiple’s of 1000 and a period for the decimal:
$12,000.23
^\$?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,} (\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$ |
Currency – British Pounds with commas for multiple’s of 1000 and a period for the decimal:
£12,000.23
^\u00A3?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,} (\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$ |
Currency – Euros with periods for multiple’s of 1000 and a comma for the decimal:
€12.000,23
^\u20AC?([1-9]{1}[0-9]{0,2}(\.[0-9]{3})*(\,[0-9]{0,2})?|[1-9]{1}[0-9]{0,} (\,[0-9]{0,2})?|0(\,[0-9]{0,2})?|(\,[0-9]{1,2})?)$ |
Currency – Euros, French style, with spaces for multiple’s of 1000 and a comma for the decimal:
€12 000,23
^\u20AC?([1-9]{1}[0-9]{0,2}(\s[0-9]{3})*(\,[0-9]{0,2})?|[1-9]{1}[0-9]{0,} (\,[0-9]{0,2})?|0(\,[0-9]{0,2})?|(\,[0-9]{1,2})?)$ |
In the last example:
Currency – Euros, French style, with spaces for multiple’s of 1000 and a comma for the decimal:
€12 000.23
I believe the “dot-23” should be “comma-23” like:
€12 000,23
Great site! Just love it.