1. function validateForm(form, patterns) {
  2. const errors = {};
  3. for (const fieldName in form) {
  4. const fieldValue = form[fieldName];
  5. const pattern = patterns[fieldName];
  6. if (pattern) {
  7. const validationResult = validateField(fieldValue, pattern);
  8. if (validationResult.error) {
  9. errors[fieldName] = validationResult.error;
  10. }
  11. }
  12. }
  13. return errors;
  14. }
  15. function validateField(value, pattern) {
  16. try {
  17. const regex = new RegExp(pattern);
  18. if (!regex.test(value)) {
  19. return { error: pattern }; // Return the pattern as the error message
  20. }
  21. // Additional validation logic, e.g., length constraints
  22. if (pattern.includes("min=") && value.length < parseInt(pattern.substring(pattern.indexOf("min=") + 4))) {
  23. return { error: "Minimum length not met." };
  24. }
  25. if (pattern.includes("max=") && value.length > parseInt(pattern.substring(pattern.indexOf("max=") + 4))) {
  26. return { error: "Maximum length exceeded." };
  27. }
  28. return { success: true }; // Return success object if validation passes.
  29. } catch (error) {
  30. return { error: "Invalid pattern." }; // Handle invalid regex patterns
  31. }
  32. }
  33. // Example Usage:
  34. // Define your patterns
  35. const fieldPatterns = {
  36. name: /^[a-zA-Z\s]+$/, // Letters and spaces only
  37. email: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, // Basic email format
  38. age: /^\d+$/, // Only digits
  39. zipCode: /^\d{5}(?:[-\s]\d{4})?$/, // US zip code format
  40. password: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$/, // Strong password
  41. };
  42. // Example Form Data
  43. const formData = {
  44. name: "John Doe",
  45. email: "john.doe@example.com",
  46. age: "30",
  47. zipCode: "12345",
  48. password: "StrongP@sswOrd"
  49. };
  50. // Validate the form
  51. const validationErrors = validateForm(formData, fieldPatterns);
  52. // Display the errors
  53. if (Object.keys(validationErrors).length > 0) {
  54. console.log("Validation Errors:");
  55. for (const field in validationErrors) {
  56. console.log(`${field}: ${validationErrors[field]}`);
  57. }
  58. } else {
  59. console.log("Form is valid.");
  60. }

Add your comment