Skip to content

Instantly share code, notes, and snippets.

@nathansmith
Last active April 29, 2021 21:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nathansmith/9a5dbf3d96e7b863e56ba531966afddb to your computer and use it in GitHub Desktop.
Save nathansmith/9a5dbf3d96e7b863e56ba531966afddb to your computer and use it in GitHub Desktop.
Regex for valid zip codes.
/*
Example usage:
// Logs `true`.
console.log(
validZipCodeCA('A9A 9A9')
);
*/
const validZipCodeCA = (value = '') => {
// Clean up.
const newValue = String(value).trim().replace(/\s+/g, ' ');
// Get boolean.
const bool = !!newValue.match(/^[A-Z][0-9][A-Z]\s[0-9][A-Z][0-9]$/i);
// Expose boolean.
return bool;
};
/*
Example usage:
// Logs `true`.
console.log(
validZipCodeMX('99999')
);
// Logs `true`.
console.log(
validZipCodeMX('99999-99999')
);
*/
const validZipCodeMX = (value = '') => {
// Clean up.
const newValue = String(value).trim().replace(/\s+/g, ' ');
// Get boolean.
const bool = !!(
// "99999"
newValue.match(/^[0-9]{5}$/) ||
// "99999-99999"
newValue.match(/^[0-9]{5}-[0-9]{5}$/)
);
// Expose boolean.
return bool;
};
/*
Example usage:
// Logs `true`.
console.log(
validZipCodeUK('AA9A 9AA')
);
// Logs `true`.
console.log(
validZipCodeUK('A9A 9AA')
);
// Logs `true`.
console.log(
validZipCodeUK('A9 9AA')
);
// Logs `true`.
console.log(
validZipCodeUK('A99 9AA')
);
// Logs `true`.
console.log(
validZipCodeUK('AA9 9AA')
);
// Logs `true`.
console.log(
validZipCodeUK('AA99 9AA')
);
*/
const validZipCodeUK = (value = '') => {
// Clean up.
const newValue = String(value).trim().replace(/\s+/g, ' ');
// Get boolean.
const bool = !!(
// "AA9A 9AA"
newValue.match(/^[A-Z][A-Z][0-9][A-Z]\s[0-9][A-Z][A-Z]$/i) ||
// "A9A 9AA"
newValue.match(/^[A-Z][0-9][A-Z]\s[0-9][A-Z][A-Z]$/i) ||
// "A9 9AA"
newValue.match(/^[A-Z][0-9]\s[0-9][A-Z][A-Z]$/i) ||
// "A99 9AA"
newValue.match(/^[A-Z][1-9][1-9]\s[1-9][A-Z][A-Z]$/i) ||
// "AA9 9AA"
newValue.match(/^[A-Z][A-Z][0-9]\s[0-9][A-Z][A-Z]$/i) ||
// "AA99 9AA"
newValue.match(/^[A-Z][A-Z][0-9][0-9]\s[0-9][A-Z][A-Z]$/i)
);
// Expose boolean.
return bool;
};
/*
Example usage:
// Logs `true`.
console.log(
validZipCodeUS('99999')
);
// Logs `true`.
console.log(
validZipCodeUS('99999-9999')
);
*/
const validZipCodeUS = (value = '') => {
// Clean up.
const newValue = String(value).trim().replace(/\s+/g, ' ');
// Get boolean.
const bool = !!(
// "99999"
newValue.match(/^[0-9]{5}$/) ||
// "99999-9999"
newValue.match(/^[0-9]{5}-[0-9]{4}$/)
);
// Expose boolean.
return bool;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment