Gibt es eine Möglichkeit, eine Regex in JavaScript, die Daten von mehreren Formaten, wie validiert haben: DD-MM-YYYY oder DD.MM.YYYY oder DD/MM/YYYYY usw.? Ich brauche alle diese in einer Regex und ich bin nicht wirklich gut mit ihm. Bis jetzt habe ich mit diesem kommen: var dateReg = /^\d{2}-\d{2}-\d{4}$/;
für TT-MM-JJJJ. Ich muss nur das Datumsformat validieren, nicht das Datum selbst.
Antwort
Zu viele Anzeigen?
Ram Thota
Punkte
500
Wenn Sie Ihre Daten validieren möchten date(YYYY-MM-DD)
zusammen mit dem Vergleich wird es für Sie voll nutzbar sein...
function validateDate()
{
var newDate = new Date();
var presentDate = newDate.getDate();
var presentMonth = newDate.getMonth();
var presentYear = newDate.getFullYear();
var dateOfBirthVal = document.forms[0].dateOfBirth.value;
if (dateOfBirthVal == null)
return false;
var validatePattern = /^(\d{4})(\/|-)(\d{1,2})(\/|-)(\d{1,2})$/;
dateValues = dateOfBirthVal.match(validatePattern);
if (dateValues == null)
{
alert("Date of birth should be null and it should in the format of yyyy-mm-dd")
return false;
}
var birthYear = dateValues[1];
birthMonth = dateValues[3];
birthDate= dateValues[5];
if ((birthMonth < 1) || (birthMonth > 12))
{
alert("Invalid date")
return false;
}
else if ((birthDate < 1) || (birthDate> 31))
{
alert("Invalid date")
return false;
}
else if ((birthMonth==4 || birthMonth==6 || birthMonth==9 || birthMonth==11) && birthDate ==31)
{
alert("Invalid date")
return false;
}
else if (birthMonth == 2){
var isleap = (birthYear % 4 == 0 && (birthYear % 100 != 0 || birthYear % 400 == 0));
if (birthDate> 29 || (birthDate ==29 && !isleap))
{
alert("Invalid date")
return false;
}
}
else if((birthYear>presentYear)||(birthYear+70<presentYear))
{
alert("Invalid date")
return false;
}
else if(birthYear==presentYear)
{
if(birthMonth>presentMonth+1)
{
alert("Invalid date")
return false;
}
else if(birthMonth==presentMonth+1)
{
if(birthDate>presentDate)
{
alert("Invalid date")
return false;
}
}
}
return true;
}
- See previous answers
- Weitere Antworten anzeigen