From e264ea380e9a88274ac6b66c0a4ee527de1d430e Mon Sep 17 00:00:00 2001 From: Arun Date: Wed, 12 Aug 2026 07:10:58 +0000 Subject: [PATCH] fix(isVAT): accept Spanish digit controls Signed-off-by: Arun --- src/lib/isVAT.js | 2 +- test/validators.test.js | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/lib/isVAT.js b/src/lib/isVAT.js index 68aab5c12..f561d3ae1 100644 --- a/src/lib/isVAT.js +++ b/src/lib/isVAT.js @@ -76,7 +76,7 @@ export const vatMatchers = { RO: str => /^(RO)?\d{2,10}$/.test(str), SK: str => /^(SK)?\d{10}$/.test(str), SI: str => /^(SI)?\d{8}$/.test(str), - ES: str => /^(ES)?\w\d{7}[A-Z]$/.test(str), + ES: str => /^(ES)?(?:[ABEH]\d{8}|[NPQRSW]\d{7}[A-J]|[CDFGJUV]\d{7}[0-9A-J])$/.test(str), SE: str => /^(SE)?\d{12}$/.test(str), /** diff --git a/test/validators.test.js b/test/validators.test.js index 3d2c8e8b2..98d2a12ff 100644 --- a/test/validators.test.js +++ b/test/validators.test.js @@ -15574,12 +15574,22 @@ describe('Validators', () => { validator: 'isVAT', args: ['ES'], valid: [ - 'ESA1234567A', - 'A1234567A', + 'ESA28015865', + 'A82018474', + 'ESP1234567A', + 'P1234567A', + 'ESN1234567A', + 'ESC12345678', + 'C1234567A', ], invalid: [ 'ES 1234567A', '123456789', + 'ESA1234567A', + 'ESP12345678', + 'ESN12345678', + 'ESK1234567A', + 'A1234567', ], }); test({