$re = '/\b(ATU\d{8}|BE[01]\d{9}|BG\d{9,10}|CY\d{8}[LX]|CZ\d{8,10}|DE\d{9}|DK\d{8}|EE\d{9}|EL\d{9}|ES[\dA-Z]\d{7}[\dA-Z]|FI\d{8}|FR[\dA-Z]{2}\d{9}|HR\d{11}|HU\d{8}|IE\d{7}[A-Z]{2}|IT\d{11}|LT(\d{9}|\d{12})|LU\d{8}|LV\d{11}|MT\d{8}|NL\d{9}B\d{2}|PL\d{10}|PT\d{9}|RO\d{2,10}|SE\d{12}|SI\d{8}|SK\d{10})\b/m';
$str = 'ATU12345678
BE1234567890
BG123456789
HR12345678901
CY12345678X
CZ12345678
DK12345678
EE123456789
FI12345678
FR12345678901
DE123456789
EL123456789
HU12345678
IE1234567WA
IT12345678901
LV12345678901
LT123456789
LU12345678
MT12345678
NL123456789B01
PL1234567890
PT123456789
RO1234567890
SK1234567890
SI12345678
ESX12345678
SE123456789012';
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