Launching a SaaS?·Collect waitlist signups before you build — before.run
SandboxPatternsDetectDocsChangelog
Finance
#vat
#eu
#europe
#tax

EU VAT Number

Validates European Union VAT numbers across all 27 member states. Each country has a 2-letter ISO prefix followed by 8–12 alphanumeric characters.

✓ B2B invoice validation✓ EU e-commerce checkout✓ Accounting software integrations
/
/
Safe
Test String
5 matches
(?:…)Non-capturing group— Non-capturing group — groups without capturing (no index assigned)
AA— 'A' — literal character
TT— 'T' — literal character
UU— 'U' — literal character
[…]{8}Character class […]— Matches any single character listed in this set — repeated exactly 8 times · {8} — exactly 8 times
||— | — alternation: matches expression on left OR right
BB— 'B' — literal character
EE— 'E' — literal character
[…]{10}Character class […]— Matches any single character listed in this set — repeated exactly 10 times · {10} — exactly 10 times
||— | — alternation: matches expression on left OR right
BB— 'B' — literal character
GG— 'G' — literal character
[…]{9,10}Character class […]— Matches any single character listed in this set — repeated between 9 and 10 times · {9,10} — between 9 and 10 times
||— | — alternation: matches expression on left OR right
CC— 'C' — literal character
YY— 'Y' — literal character
[…]{8}Character class […]— Matches any single character listed in this set — repeated exactly 8 times · {8} — exactly 8 times
[…]Character class […]— Matches any single character listed in this set
||— | — alternation: matches expression on left OR right
CC— 'C' — literal character
ZZ— 'Z' — literal character
[…]{8,10}Character class […]— Matches any single character listed in this set — repeated between 8 and 10 times · {8,10} — between 8 and 10 times
||— | — alternation: matches expression on left OR right
DD— 'D' — literal character
EE— 'E' — literal character
[…]{9}Character class […]— Matches any single character listed in this set — repeated exactly 9 times · {9} — exactly 9 times
||— | — alternation: matches expression on left OR right
DD— 'D' — literal character
KK— 'K' — literal character
[…]{8}Character class […]— Matches any single character listed in this set — repeated exactly 8 times · {8} — exactly 8 times
||— | — alternation: matches expression on left OR right
EE— 'E' — literal character
EE— 'E' — literal character
[…]{9}Character class […]— Matches any single character listed in this set — repeated exactly 9 times · {9} — exactly 9 times
||— | — alternation: matches expression on left OR right
EE— 'E' — literal character
LL— 'L' — literal character
[…]{9}Character class […]— Matches any single character listed in this set — repeated exactly 9 times · {9} — exactly 9 times
||— | — alternation: matches expression on left OR right
EE— 'E' — literal character
SS— 'S' — literal character
[…]Character class […]— Matches any single character listed in this set
[…]{7}Character class […]— Matches any single character listed in this set — repeated exactly 7 times · {7} — exactly 7 times
[…]Character class […]— Matches any single character listed in this set
||— | — alternation: matches expression on left OR right
FF— 'F' — literal character
II— 'I' — literal character
[…]{8}Character class […]— Matches any single character listed in this set — repeated exactly 8 times · {8} — exactly 8 times
||— | — alternation: matches expression on left OR right
FF— 'F' — literal character
RR— 'R' — literal character
[…]{2}Character class […]— Matches any single character listed in this set — repeated exactly 2 times · {2} — exactly 2 times
[…]{9}Character class […]— Matches any single character listed in this set — repeated exactly 9 times · {9} — exactly 9 times
||— | — alternation: matches expression on left OR right
HH— 'H' — literal character
RR— 'R' — literal character
[…]{11}Character class […]— Matches any single character listed in this set — repeated exactly 11 times · {11} — exactly 11 times
||— | — alternation: matches expression on left OR right
HH— 'H' — literal character
UU— 'U' — literal character
[…]{8}Character class […]— Matches any single character listed in this set — repeated exactly 8 times · {8} — exactly 8 times
||— | — alternation: matches expression on left OR right
II— 'I' — literal character
EE— 'E' — literal character
[…]{7}Character class […]— Matches any single character listed in this set — repeated exactly 7 times · {7} — exactly 7 times
[…]{1,2}Character class […]— Matches any single character listed in this set — repeated between 1 and 2 times · {1,2} — between 1 and 2 times
||— | — alternation: matches expression on left OR right
II— 'I' — literal character
TT— 'T' — literal character
[…]{11}Character class […]— Matches any single character listed in this set — repeated exactly 11 times · {11} — exactly 11 times
||— | — alternation: matches expression on left OR right
LL— 'L' — literal character
TT— 'T' — literal character
(?:…)Non-capturing group— Non-capturing group — groups without capturing (no index assigned)
||— | — alternation: matches expression on left OR right
LL— 'L' — literal character
UU— 'U' — literal character
[…]{8}Character class […]— Matches any single character listed in this set — repeated exactly 8 times · {8} — exactly 8 times
||— | — alternation: matches expression on left OR right
LL— 'L' — literal character
VV— 'V' — literal character
[…]{11}Character class […]— Matches any single character listed in this set — repeated exactly 11 times · {11} — exactly 11 times
||— | — alternation: matches expression on left OR right
MM— 'M' — literal character
TT— 'T' — literal character
[…]{8}Character class […]— Matches any single character listed in this set — repeated exactly 8 times · {8} — exactly 8 times
||— | — alternation: matches expression on left OR right
NN— 'N' — literal character
LL— 'L' — literal character
[…]{9}Character class […]— Matches any single character listed in this set — repeated exactly 9 times · {9} — exactly 9 times
BB— 'B' — literal character
[…]{2}Character class […]— Matches any single character listed in this set — repeated exactly 2 times · {2} — exactly 2 times
||— | — alternation: matches expression on left OR right
PP— 'P' — literal character
LL— 'L' — literal character
[…]{10}Character class […]— Matches any single character listed in this set — repeated exactly 10 times · {10} — exactly 10 times
||— | — alternation: matches expression on left OR right
PP— 'P' — literal character
TT— 'T' — literal character
[…]{9}Character class […]— Matches any single character listed in this set — repeated exactly 9 times · {9} — exactly 9 times
||— | — alternation: matches expression on left OR right
RR— 'R' — literal character
OO— 'O' — literal character
[…]{2,10}Character class […]— Matches any single character listed in this set — repeated between 2 and 10 times · {2,10} — between 2 and 10 times
||— | — alternation: matches expression on left OR right
SS— 'S' — literal character
EE— 'E' — literal character
[…]{12}Character class […]— Matches any single character listed in this set — repeated exactly 12 times · {12} — exactly 12 times
||— | — alternation: matches expression on left OR right
SS— 'S' — literal character
II— 'I' — literal character
[…]{8}Character class […]— Matches any single character listed in this set — repeated exactly 8 times · {8} — exactly 8 times
||— | — alternation: matches expression on left OR right
SS— 'S' — literal character
KK— 'K' — literal character
[…]{10}Character class […]— Matches any single character listed in this set — repeated exactly 10 times · {10} — exactly 10 times
Pattern: 382 charsInput: 64 chars
100% client-side · private

✓ Valid Examples

  • DE123456789
  • FR12345678901
  • PL1234567890
  • ATU12345678
  • IT12345678901

✗ Invalid Examples

  • 123456789
  • XX123456789
  • DE12345
  • US123456789

Usage & Integration

Validate EU VAT Number natively in your backend or frontend without copying regex strings.

Node / Edge

import { validate } from '@regexto/validators';

validate('vat-eu', '...');

Python

from regexto_validators import validate

validate("vat-eu", "...")

Go

import "github.com/regex-to/validators-go"

valid, err := validators.Validate("vat-eu", "...")

PHP

use RegexTo\Validators\Validator;

Validator::validate('vat-eu', '...');

Rust

use regexto_validators::validate;

let is_valid = validate("vat-eu", "...").unwrap();