Regular Expressions Cookbook, 2nd edition, 4.21. European VAT Numbers sectionに設けた27のEU加盟国のVAT番号を検証する正規表現があります。
この正規表現ではコンピューティングチェックはありませんが、引き続きEU VAT番号である可能性のあるスタンドアロン文字列をチェックすることができます。
検証の前に、[-.●]
または[^A-Z0-9]
の記号を削除する必要があります。その後、regex demo
を参照してください
(?xi)^(
(AT)?U[0-9]{8} | # Austria
(BE)?0[0-9]{9} | # Belgium
(BG)?[0-9]{9,10} | # Bulgaria
(HR)?[0-9]{11} | # Croatia
(CY)?[0-9]{8}L | # Cyprus
(CZ)?[0-9]{8,10} | # Czech Republic
(DE)?[0-9]{9} | # Germany
(DK)?[0-9]{8} | # Denmark
(EE)?[0-9]{9} | # Estonia
(EL)?[0-9]{9} | # Greece
ES[A-Z][0-9]{7}(?:[0-9]|[A-Z]) | # Spain
(FI)?[0-9]{8} | # Finland
(FR)?[0-9A-Z]{2}[0-9]{9} | # France
(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3}) | # United Kingdom
(HU)?[0-9]{8} | # Hungary
(IE)?[0-9]{7}[A-Z]{1,2} | # Ireland
(IE)?[0-9][A-Z][0-9]{5}[A-Z] | # Ireland (2)
(IT)?[0-9]{11} | # Italy
(LT)?([0-9]{9}|[0-9]{12}) | # Lithuania
(LU)?[0-9]{8} | # Luxembourg
(LV)?[0-9]{11} | # Latvia
(MT)?[0-9]{8} | # Malta
(NL)?[0-9]{9}B[0-9]{2} | # Netherlands
(PL)?[0-9]{10} | # Poland
(PT)?[0-9]{9} | # Portugal
(RO)?[0-9]{2,10} | # Romania
(SE)?[0-9]{12} | # Sweden
(SI)?[0-9]{8} | # Slovenia
(SK)?[0-9]{10} # Slovakia
)$
を使用し、私はここにクロアチアの付加価値税の代替を追加しました。
国コードが存在することが予想される場合は、閉じ括弧の後に?
個の制限記号を削除してください。
新しい国がEUに加わるか、加盟国が付加価値税番号の規則を変更するたびに、正規表現には更新が必要です。
料理本の正規表現は、WikiのアイルランドのVAT番号定義に対応していないことに注意してください。
また、それはいくつかのVAT番号はどちらかのハード取得する場合や、通常のプログラミング言語を使用して計算する必要がある特定のデータを必要とするため、完全に正規表現でこれを検証することはできません意味:
- フランスの最初の2桁フランス語のキーは、
Key = [ 12 + 3 * (SIREN modulo 97) ] modulo 97
のように計算されます。のように、404,833,048
の税番号はFR 83,404,833,048
です。ソースはwww.insee.frです。
- フィンランドVAT最後の桁は、MOD 11-2を利用してチェックデジットである
- イタリアのVATは11
によって
スロバキアVAT番号は割り切れなければならない州3シンボルコード(インデックス8、9、10)を有しています
どの国のVATに興味がありますか?すべて、EUのみ、または特定の国? [Safaribooksonline](https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s21.html)リソースを確認してください。 –
EUのVAT番号。 –