Script Valley
Regex: Actually Useful Patterns
Real-World Validation PatternsLesson 5.5

Building a reusable regex validation library in JavaScript

module pattern, compiled regex constants, validate function, error messages, chaining validators, TypeScript types optional

One File, All Your Validators

Validation library

Compiling regex once at module load time is faster than recompiling on every call.

// validators.js
const PATTERNS = {
  email:  /^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/,
  phone:  /^\(?\d{3}\)?[\s.\-]?\d{3}[\s.\-]?\d{4}$/,
  zip:    /^\d{5}(-\d{4})?$/,
  url:    /^https?:\/\/[\w.\-]+(?:\/[^\s]*)?$/i,
};

export function validate(field, value) {
  const pattern = PATTERNS[field];
  if (!pattern) throw new Error(`Unknown field: ${field}`);
  return pattern.test(value.trim()) ? null : MESSAGES[field];
}