JAVASCRIPT
Validating Common Date Formats (DD/MM/YYYY or MM-DD-YYYY)
Validate common date formats (DD/MM/YYYY, MM-DD-YYYY) using a comprehensive JavaScript regex. Essential for form validation, ensuring correct day, month, and basic leap year logic.
function isValidDateFormat(dateString) {
// Validates dates in DD/MM/YYYY or MM-DD-YYYY format.
// Note: This regex checks format and some date validity (e.g., 31/02/2023 would fail).
// It handles leap years for Feb 29th and ensures correct day counts for months.
const dateRegex = /^(?:(?:31(\/|-)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-)(?:0?[13-9]|1[0-2])\2))(?:1[6-9]|[2-9]\d)\d{2}$|^(?:28(\/|-)(?:0?[1-9]|1[0-2])\3)(?:1[6-9]|[2-9]\d)\d{2}$|^(?:(?:0?[1-9]|1\d|2[0-8])(\/|-)(?:0?[1-9]|1[0-2])\4)(?:1[6-9]|[2-9]\d)\d{2}$/;
return dateRegex.test(dateString);
}
console.log("Valid DD/MM/YYYY:", isValidDateFormat("25/12/2023")); // true
console.log("Valid MM-DD-YYYY:", isValidDateFormat("12-25-2023")); // true
console.log("Invalid Day (32):";, isValidDateFormat("32/01/2023")); // false
console.log("Invalid Month (13):";, isValidDateFormat("01/13/2023")); // false
console.log("Valid Leap Day:", isValidDateFormat("29/02/2024")); // true
console.log("Invalid Non-Leap Day:";, isValidDateFormat("29/02/2023")); // false
console.log("Invalid Format:";, isValidDateFormat("2023-12-25")); // false
console.log("Invalid Feb (30 days):";, isValidDateFormat("30/02/2024")); // false
How it works: This JavaScript function `isValidDateFormat` uses a complex regular expression to validate date strings in either `DD/MM/YYYY` or `MM-DD-YYYY` format. This pattern goes beyond simple format checking, incorporating logic to ensure the day and month numbers are within valid ranges (e.g., no month 13, no day 32, and handles 29th February for leap years). It also accepts both `/` and `-` as consistent separators and assumes years from 1600 to 9999. The `test()` method returns `true` for a format-valid and partially date-valid string, `false` otherwise.