$re = '/^[0-9A-Fa-f]{1,2}(?:[:-][0-9A-Fa-f]{0,2}){0,5}$/m';
$str = '93:31:13:E1:D3:1A:
93:31:13:E1:D3:1A
93:31:13:E1:D3:1
93:31:13:E1:D3:
93:31:13:E1:D3
93:31:13:E1:D
93:31:13:E1:
93:31:13:E1
93:31:13:E
93:31:13:
93:31:13
93:31:1
93:31:
93:31
93:3
93:
93
9
3E-EB-47-8
84:0C:
3E:EB-47-8
6B-90-8Y-31-D1-7K
37-4H-31';
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