private $euVatFormats = array(
'AT' => '(AT)?U[0-9]{8}', # Austria
'BE' => '(BE)?0[0-9]{9}', # Belgium
'BG' => '(BG)?[0-9]{9,10}', # Bulgaria
'CY' => '(CY)?[0-9]{8}[A-Z]', # Cyprus
'CZ' => '(CZ)?[0-9]{8,10}', # Czech Republic
'DE' => '(DE)?[0-9]{9}', # Germany
'DK' => '(DK)?[0-9]{8}', # Denmark
'EE' => '(EE)?[0-9]{9}', # Estonia
'GR' => '(EL)?[0-9]{9}', # Greece
'ES' => '(ES)?[A-Z][0-9]{7}(?:[0-9]|[A-Z])', # Spain
'FI' => '(FI)?[0-9]{8}', # Finland
'FR' => '(FR)?[0-9A-Z]{2}[0-9]{9}', # France
//'GB' => '(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})', # United Kingdom // Brexit!
'HR' => '(HR)?[0-9]{11}', # Croatia
'HU' => '(HU)?[0-9]{8}', # Hungary
'IE' => '(IE)?[0-9]{7}[A-Z]{1,2}', # Ireland
'IE2' => '(IE)?[0-9][A-Z][0-9]{5}[A-Z]', # Ireland (2)
'IT' => '(IT)?[0-9]{11}', # Italy
'LT' => '(LT)?([0-9]{9}|[0-9]{12})', # Lithuania
'LU' => '(LU)?[0-9]{8}', # Luxembourg
'LV' => '(LV)?[0-9]{11}', # Latvia
'MT' => '(MT)?[0-9]{8}', # Malta
'NL' => '(NL)?[0-9]{9}B[0-9]{2}', # Netherlands
'PL' => '(PL)?[0-9]{10}', # Poland
'PT' => '(PT)?[0-9]{9}', # Portugal
'RO' => '(RO)?[0-9]{2,10}', # Romania
'SE' => '(SE)?[0-9]{12}', # Sweden
'SI' => '(SI)?[0-9]{8}', # Slovenia
'SK' => '(SK)?[0-9]{10}', # Slovakia
);
in this list missing XI that is North Ireland and IE2 what is it?
https://ec.europa.eu/taxation_customs/vies/#/vat-validation
XI has same VAT syntax of GB VAT:
(XI)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})
please avoid the VIES check if the VAT code is in the same country of the Shop.