Finance
#vat
#eu
#europe
#tax
Updated: 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
DE123456789
FR12345678901
PL1234567890
ATU12345678
IT12345678901
(?:…)Non-capturing group— Non-capturing group — groups without capturing (no index assigned)AA— 'A' — literal characterTT— 'T' — literal characterUU— '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 rightBB— 'B' — literal characterEE— '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 rightBB— 'B' — literal characterGG— '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 rightCC— 'C' — literal characterYY— '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 rightCC— 'C' — literal characterZZ— '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 rightDD— 'D' — literal characterEE— '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 rightDD— 'D' — literal characterKK— '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 rightEE— 'E' — literal characterEE— '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 rightEE— 'E' — literal characterLL— '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 rightEE— 'E' — literal characterSS— '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 rightFF— 'F' — literal characterII— '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 rightFF— 'F' — literal characterRR— '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 rightHH— 'H' — literal characterRR— '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 rightHH— 'H' — literal characterUU— '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 rightII— 'I' — literal characterEE— '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 rightII— 'I' — literal characterTT— '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 rightLL— 'L' — literal characterTT— 'T' — literal character(?:…)Non-capturing group— Non-capturing group — groups without capturing (no index assigned)||— | — alternation: matches expression on left OR rightLL— 'L' — literal characterUU— '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 rightLL— 'L' — literal characterVV— '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 rightMM— 'M' — literal characterTT— '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 rightNN— 'N' — literal characterLL— 'L' — literal character[…]{9}Character class […]— Matches any single character listed in this set — repeated exactly 9 times · {9} — exactly 9 timesBB— '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 rightPP— 'P' — literal characterLL— '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 rightPP— 'P' — literal characterTT— '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 rightRR— 'R' — literal characterOO— '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 rightSS— 'S' — literal characterEE— '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 rightSS— 'S' — literal characterII— '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 rightSS— 'S' — literal characterKK— 'K' — literal character[…]{10}Character class […]— Matches any single character listed in this set — repeated exactly 10 times · {10} — exactly 10 timesPattern:
382 charsInput: 64 chars100% 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();