В наших интернет-магазинах я делаю это аналогично решению в статье Code Project.
Прежде чем отправить его в веб-службы, я делаю небольшую проверку исправности регулярного выражения, чтобы отфильтровать "синтаксически" неправильные идентификаторы НДС и, следовательно, уменьшить количество вызовов SOAP, которые я должен выполнить.
Это отрывок из таблицы, которую я использую для хранения регулярных выражений, может быть, это поможет вам, если вы планируете нечто подобное:
Code2 VatIDRegex
----------------------------------------------------------
at ^ATU[A-Z0-9]{8,8}$
be ^BE[0-9]{9,9}$
cy ^CY[0-9]{9,9}$
cz ^CZ[0-9]{8,10}$
de ^DE[0-9]{9,9}$
dk ^DK[0-9]{8,8}$
ee ^EE[0-9]{9,9}$
es ^ES[A-Z0-9]{1,1}[0-9]{7,7}[A-Z0-9]{1,1}$
fi ^FI[0-9]{8,8}$
fr ^FR[A-Z0-9]{2,2}[0-9]{9,9}$
gb ^GB[0-9]{9,9}$|^GB[0-9]{12,12}$|^GBGD[0-9]{3,3}$
hu ^HU[0-9]{8,8}$
ie ^IE[A-Z0-9]{8,8}$
it ^IT[0-9]{11,11}$
lt ^LT[0-9]{9,9}$|^LT[0-9]{12,12}$
lu ^LU[0-9]{8,8}$
lv ^LV[0-9]{11,11}$
mt ^MT[0-9]{8,8}$
nl ^NL[A-Z0-9]{9,9}B[A-Z0-9]{2,2}$
pl ^PL[0-9]{10,10}$
pt ^PT[0-9]{9,9}$
se ^SE[0-9]{12,12}$
si ^SI[0-9]{8,8}$
sk ^SK[0-9]{10,10}$