PHP phone number validation – revisited

Several months ago, when I was first getting familiar with regular expression, I made a post talking about PHP form validation for phone numbers and email addresses.

A couple of days ago, I revisited that post and realized how inefficient my function actually was. The entire point of regex is to recognize multiple patterns within 1 statement. Here is my revised regular expression.

{code type=php}

This single function detects for all the patterns in the original post and more.


{code type=php}
$phone_numbers = array(
‘555 555 5555’,
‘1(519) 555-4444’,
‘1 (519) 555-4422’,
$regex = “/^(\d[\s-]?)?[\(\[\s-]{0,2}?\d{3}[\)\]\s-]{0,2}?\d{3}[\s-]?\d{4}$/i”;
foreach( $phone_numbers as $number ) {
echo $number . ‘: ‘ . ( preg_match( $regex, $number ) ? ‘valid’ : ‘invalid’ ) . ‘


{code type=php}
555-555-5555: valid
5555425555: valid
555 555 5555: valid
1(519) 555-4444: valid
1 (519) 555-4422: valid
1-555-555-5555: valid
1-(555)-555-5555: valid
1-(555)-555-25555: invalid

Form Validation in PHP – Simplified

I was created a form earlier today, when I had to add Phone Number validation to the existing validation. This form already included email validation, but I decided to go over it as well.

Email Validation

This is a very similar validation, but there is nothing needed to customize:

{code type=php}
function valid_email( $str )
// This checks for “[email protected]
return ( ! preg_match(“/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix”, $str)) ? FALSE : TRUE;

if( ! valid_email( $_POST[’email_address’] ) {
echo “Please enter a valid email address.”


Phone Number Validation

Edit: Please check out my new post on phone number validation, as it has a much more efficient regular expression pattern.

Phone Number validation is fairly straight forward, but has one major issue – formatting! There are many ways of putting in a phone number, and for usability’s sake, it’s best to supp
Continue reading Form Validation in PHP – Simplified