我有一个html表单字段,人们可以输入这样编码的日期:
input type="text" name="dateofbirth" placeholder="dd/mm/yyyy"
我正在尝试查找JavaScript以检查日期是否以dd/mm/yyyy
格式输入(所以10个字符,2/2/4)
任何意见将不胜感激。只有第一次做javascript并且一直很好,直到这个打嗝。
编辑:代码(表单名称为'注册)
// JavaScript Document
function validateForm(signup) {
{
var x = document.forms["signup"]["dateofbirth"].value;
var reg = /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/;
if (x.match(reg)) {
return true;
}
else {
alert("Please enter dd/mm/yyyy");
return false;
}
}
}
答案 0 :(得分:2)
您可以使用正则表达式通过javascript使用您提供的格式验证日期。示例代码如下所示。
function(input){
var reg = /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/;
if (input.match(reg)) {
alert("Input matched");
else {
alert("Please enter dd/mm/yyyy");
}
}
答案 1 :(得分:1)
答案 2 :(得分:1)
我找到的最好的JavaScript日期库是http://code.google.com/p/datejs/
的date.js它也具有文化意识,因此要验证您的dd / mm / yyyy日期(我假设您不在美国),请使用Date.parse,如下所示
var d1 = Date.parse("01/12/2004"); // returns a valid JavaScript date
var d2 = Date.parse("30/02/2004"); // returns null
答案 3 :(得分:0)
查看MDN guide for regular expressions。您将需要与数字匹配的字符类信息 - 搜索“匹配数字字符”短语;以及指定确切匹配长度的方法 - 在本指南中搜索“匹配前一个字符的恰好n次出现”短语。
答案 4 :(得分:0)
您是否查看过Web浏览器的错误控制台以确保没有引发JS语法或运行时错误?您附加到问题的JavaScript代码是无效令人惊讶(您有一个额外的{
和}
包裹您的函数体。)
提示:使用正则表达式测试字符串的有效性时,您应该使用if (regex.test(str))
而不是if (str.match(regex))
来简化性能和自我记录。
根据您的要求,我会这样做:
function isDDMMYYYY(str){
return /^\d{2}/\d{2}/\d{4}$/.test(str);
}
但是,我个人会更改要求,以允许用户输入一位数的日期和月份:
return /^\d{1,2}/\d{1,2}/\d{4}$/.test(str);
答案 5 :(得分:0)
验证日期包括所有角色,例如12月28日和29年
function leapYear(year) {
return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}
function validateDayMonth(day, month, year) {
var months = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
var days = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"];
if (months.indexOf(month) != -1 && days.indexOf(day) != -1) {
if ((month == '02' && day == '29' && leapYear(year) == false) || (month == '02' && day == '30') || (month == '02' && day == '31') || (month == '04' && day == '31') || (month == '06' && day == '31') || (month == '09' && day == '31') || (month == '11' && day == '31')) {
return false;
} else {
var GivenDate = year + '-' + month + '-' + day;
var CurrentDate = new Date();
GivenDate = new Date(GivenDate);
if (GivenDate > CurrentDate) {
return false;
} else {
return true;
}
}
} else {
return false;
}
}