diff --git a/src/lib/isVAT.js b/src/lib/isVAT.js index f561d3ae1..686e37028 100644 --- a/src/lib/isVAT.js +++ b/src/lib/isVAT.js @@ -52,10 +52,10 @@ export const vatMatchers = { * European Union VAT identification numbers */ AT: str => /^(AT)?U\d{8}$/.test(str), - BE: str => /^(BE)?\d{10}$/.test(str), + BE: str => /^(BE)?[01]\d{9}$/.test(str), BG: str => /^(BG)?\d{9,10}$/.test(str), HR: str => /^(HR)?\d{11}$/.test(str), - CY: str => /^(CY)?\w{9}$/.test(str), + CY: str => /^(CY)?\d{8}[A-Z]$/.test(str), CZ: str => /^(CZ)?\d{8,10}$/.test(str), DK: str => /^(DK)?\d{8}$/.test(str), EE: str => /^(EE)?\d{9}$/.test(str), @@ -64,20 +64,20 @@ export const vatMatchers = { DE: str => /^(DE)?\d{9}$/.test(str), EL: str => /^(EL)?\d{9}$/.test(str), HU: str => /^(HU)?\d{8}$/.test(str), - IE: str => /^(IE)?\d{7}\w{1}(W)?$/.test(str), + IE: str => /^(IE)?(\d{7}[A-W][A-Z]?|\d[A-Z+*]\d{5}[A-W])$/.test(str), IT: str => /^(IT)?\d{11}$/.test(str), LV: str => /^(LV)?\d{11}$/.test(str), - LT: str => /^(LT)?\d{9,12}$/.test(str), + LT: str => /^(LT)?(\d{7}|\d{10})1\d$/.test(str), LU: str => /^(LU)?\d{8}$/.test(str), MT: str => /^(MT)?\d{8}$/.test(str), - NL: str => /^(NL)?\d{9}B\d{2}$/.test(str), + NL: str => /^(NL)?\d{9}B(0[1-9]|[1-9]\d)$/.test(str), PL: str => /^(PL)?(\d{10}|(\d{3}-\d{3}-\d{2}-\d{2})|(\d{3}-\d{2}-\d{2}-\d{3}))$/.test(str), PT, - RO: str => /^(RO)?\d{2,10}$/.test(str), + RO: str => /^(RO)?[1-9]\d{1,9}$/.test(str), SK: str => /^(SK)?\d{10}$/.test(str), - SI: str => /^(SI)?\d{8}$/.test(str), + SI: str => /^(SI)?[1-9]\d{7}$/.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), + SE: str => /^(SE)?\d{10}01$/.test(str), /** * VAT numbers of non-EU countries diff --git a/test/validators.test.js b/test/validators.test.js index 98d2a12ff..510e698bd 100644 --- a/test/validators.test.js +++ b/test/validators.test.js @@ -15257,10 +15257,14 @@ describe('Validators', () => { valid: [ 'BE1234567890', '1234567890', + 'BE0202239951', + '1004580993', ], invalid: [ 'BE 1234567890', '123456789', + 'BE2345678901', + '9876543210', ], }); test({ @@ -15293,12 +15297,15 @@ describe('Validators', () => { validator: 'isVAT', args: ['CY'], valid: [ - 'CY123456789', - '123456789', + 'CY90000005D', + '10200585J', + 'CY99000230P', ], invalid: [ 'CY 123456789', '12345678', + 'CY123456789', + '1234567AB', ], }); test({ @@ -15414,10 +15421,15 @@ describe('Validators', () => { valid: [ 'IE1234567AW', '1234567AW', + 'IE3206488LH', + '8F52100V', + 'IE4749148U', ], invalid: [ 'IE 1234567', '1234567', + 'IE1234567X', + '12345678', ], }); test({ @@ -15451,18 +15463,17 @@ describe('Validators', () => { validator: 'isVAT', args: ['LT'], valid: [ - 'LT123456789012', - '123456789012', - 'LT12345678901', - '12345678901', - 'LT1234567890', - '1234567890', - 'LT123456789', - '123456789', + 'LT212155811', + '119508113', + 'LT100005242513', + '100012870515', ], invalid: [ 'LT 123456789012', '12345678', + 'LT1234567890', + '12345678901', + 'LT123456789', ], }); test({ @@ -15495,6 +15506,8 @@ describe('Validators', () => { valid: [ 'NL123456789B10', '123456789B10', + 'NL002564440B01', + '851029279B01', ], invalid: [ 'NL12345678 910', @@ -15502,6 +15515,8 @@ describe('Validators', () => { 'NL123456789B1', 'GB12345678910', 'NL123456789', + 'NL123456789B00', + '123456789B00', ], }); test({ @@ -15540,10 +15555,15 @@ describe('Validators', () => { '1234567890', 'RO12', '12', + 'RO19', + 'RO361684', + '5022670', ], invalid: [ 'RO 12', '1', + 'RO01590082', + '019', ], }); test({ @@ -15564,10 +15584,14 @@ describe('Validators', () => { valid: [ 'SI12345678', '12345678', + 'SI82646716', + '14717468', ], invalid: [ 'SI 12345678', '1234567', + 'SI01234567', + '00000000', ], }); test({ @@ -15596,12 +15620,15 @@ describe('Validators', () => { validator: 'isVAT', args: ['SE'], valid: [ - 'SE123456789012', - '123456789012', + 'SE202100548901', + '556016068001', + 'SE202100544801', ], invalid: [ 'SE 123456789012', '12345678901', + 'SE123456789012', + '556016068002', ], }); test({