-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Description
Describe the bug
When checking for french postal code with isPostalCode(..., 'FR'), I can use wrong values and get true.
Examples
No department number 96 in France, isPostalCode('96000', 'FR') is true but should be false.
The actual regex is : /^\d{2}\s?\d{3}$/.
Beside, we never use space in postal codes (never seen that in 45 years).
Correction
The basic rules is : department number (2-3 digits) + digits to have up to 5 digits length, and can start with 0 (see here).
The complete list of departments is available here.
Then, the a basic correct regex should be : /^(?:(?:0[1-9]|[1-8]\d|9[0-5])\d{3}|97[1-46]\d{2})$/.
It doesn't take into account some historical specific rules on the last 3 digits, but it's way better than the current one.
Additional context
Validator.js version: 13.12.0
Node.js version: 20.17.0
OS platform: Ubuntu 24.10