validateCodePostal/index.js

/**
 * @memberof LuxUtils
 * @function validateCodePostal
 * @description Returns `true` if the given postal code is valid
 * @param {(string|integer)}  codePostalToValidate  postal code to validate. Can be a `string` or a `integer`
 * @returns {boolean} `true` or `false`

 *
 * @example
 * // validate a postal code
 *  let isValid = LuxUtils.validateCodePostal(4402); //true;
 *  let isValid2 = LuxUtils.validateCodePostal("L-4402"); //true;
 *  let isValid3 = LuxUtils.validateCodePostal("0404"); //false;
 */

export default codePostalToValidate => {
  //format: 4402
  if (Number.isInteger(codePostalToValidate)) {
    return codePostalToValidate >= 1110 && codePostalToValidate <= 9999;
  }
  if (typeof codePostalToValidate === "string") {
    //format: L-4402 as a string
    if (codePostalToValidate.startsWith("L-")) {
      codePostalToValidate = codePostalToValidate.substr(
        2,
        codePostalToValidate.length - 2
      );
    }
    //format: 4402 as a string
    if (codePostalToValidate.length === 4) {
      let parsedCP = parseInt(codePostalToValidate, 10);
      return parsedCP >= 1110 && parsedCP <= 9999;
    }
  }
  return false;
};