Click to See Complete Forum and Search --> : regular expression for date pattern


erankushmehta
November 2nd, 2006, 11:44 PM
/^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/The above expression represents a regular expression for date pattern in dd/mm/yyyy format.i m trying to validate date.i have not been able to understand what \2 is for in the above expression?

The second thing is i am unable to understand the result of string.match & how the result is stored in array & what position?i want to do it in JavaScript.
following is the code:
function isValidDate(dateStr) {
// Checks for the following valid date formats:
// MM/DD/YY MM/DD/YYYY MM-DD-YY MM-DD-YYYY
// Also separates date into month, day, and year variables
//var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
// To require a 4 digit year entry, use this line instead:
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
var matchArray = dateStr.match(datePat); // is the format ok?
if (matchArray == null) {
alert("Date is not in a valid format.")
return false;
}
day = matchArray[1]; // parse date into variables
month = matchArray[3];
year = matchArray[4];

if (month < 1 || month > 12) { // check month range
alert("Month must be between 1 and 12.");
return false;
}
if (day < 1 || day > 31) {
alert("Day must be between 1 and 31.");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Month "+month+" doesn't have 31 days!")
return false
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("February " + year + " doesn't have " + day + " days!");
return false;
}
}
return true; // date is valid
}
// End --> Plz help urgently.

PeejAvery
November 3rd, 2006, 09:08 AM
Even though I have to use them, I hate regular expressions. Take a look at this (http://www.expertsrt.com/scripts/Rod/validate_date.php) page. It has a long regular expression, but it is in the format you want.

Thread1
November 6th, 2006, 04:11 AM
/^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/

parts of expression can be grouped by placing it inside parentheses. in the expression above there are 4 groups.. backslash can be used to reference previous group, in this case "\2" designates group number 2 which means reuse "(\/|-)" in place of "\2".. the above expression is also the same as the following ..

/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/


the Match method parses the expression into array in which each element of the array corresponds to each group in the expression.

hope that helps! :D