$re = '/^(?:(52\-)|(1\-))?(\()?(?(1)[0-9]{2,3}|[2-9][0-9]{2})(?(3)\)\s?|(\-|[.]|\s|))(?(1)[0-9]|[2-9])[0-9]{2}(?(4)\4|(?:\-|[.]|\s)?)[0-9]{4}(\s?(?:x|ext|ext.|extension|Ext|Ext.|Extension|#)\s?[0-9]+)?$/m';
$str = 'Regular valid formats
225-586-7777
(223)249-4444
(223) 234-3344
223.456.2222
2253451111
223 334 4444
1-325-586-7777
1-(923)249-4444
1-(923) 234-3344
1-923.456.2222
1-9253451111
1-923 234 4444
52-125-586-7777
52-(123)249-4444
52-(123) 234-3344
52-123.456.2222
52-1253451111
52-123 134 4444
Valid formats with extensions
1-800-661-3696 x14700
1-800-661-3696x14700
1-800-661-3696 Extension 14700
1-800-661-3696 ext14700
325-586-7777 x123
(323)249-4444x123
(323) 234-3344 Ext 123
323.456.2222 ext 124
3253451111ext. 123
323 334 4444extension234
(223)456 7891 x 123
(223)456 7891 ext 123
(223)456 7891 ext. 123
(223)456 7891 Ext 123
(223)456 7891 Ext. 123
(910)456-8970 x12
(910)456-8970 #12
(910)456-8970 extension12456
(910)456-8970 Extension 12456
Invalid formats
444000-1111
444-0001111
444.000-1111
444000 1111
444 0001111
444 000.1111
444.0001111
444000.1111
444-000.1111
(4440001111
444)0001111
440001111
444000111111
125-586-7777
(123)249-4444
(123) 234-3344
123.456.2222
1253451111
123 134 4444
125-586-7777
(123)249-4444
(123) 234-3344
123.456.2222
1253451111
123 134 4444
Invalid formats with extensions
12-125-586-7777
12-(123)249-4444
12-(123) 234-3344
12-123.456.2222
12-1253451111
12-123 134 4444
12-444000-1111
12-444-0001111
12-444.000-1111
12-444000 1111
12-444 0001111
12-444 000.1111
12-444.0001111
12-444000.1111
12-444-000.1111
12-(4440001111
12-444)0001111
12-440001111
12-444000111111
1-888-720-1275 x2 x2
1-888-720-1275 2
1-888-720-1275 x
1-888-720-1275 Ext
888-720-1275x
1-444000-1111
1-444-0001111
1-444.000-1111
1-444000 1111
1-444 0001111
1-444 000.1111
1-444.0001111
1-444000.1111
1-444-000.1111
1-(4440001111
1-444)0001111
1-440001111
1-444000111111';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php