在javascript中验证DD-MM-YYYY格式

在javascript中验证DD-MM-YYYY格式,javascript,html,validation,Javascript,Html,Validation,下面是我的javascript代码,下面是我的xhtml代码,我试图让它验证我的日期,但是它会拾取我输入的每个无效日期,有人能告诉我我遗漏了什么吗任何帮助都会提前完成谢谢 function validateForm(form) { var a, i, title, fname, lname, sex, address, email, username, password, confirm, error, check, type, contact, date; var reg =

下面是我的javascript代码,下面是我的xhtml代码,我试图让它验证我的日期,但是它会拾取我输入的每个无效日期,有人能告诉我我遗漏了什么吗任何帮助都会提前完成谢谢

function validateForm(form)
{
    var a, i, title, fname, lname, sex, address, email, username, password, confirm, error, check, type, contact, date;
    var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    var matches = /^(\d{2})[-\/](\d{2})[-\/](\d{4})$/.exec(date);

    a=0;
    check=false;
    error=false;

    //other codes
    date=document.getElementById('date').value;
    //other code

if (matches == null) 
    alert('Please enter a valid date of birth');
    return false;
    var d = matches[2];
    var m = matches[1] - 1;
    var y = matches[3];
    var composedDate = new Date(y, m, d);
    return composedDate.getDate() == d &&
            composedDate.getMonth() == m &&
            composedDate.getFullYear() == y;
函数验证表单(表单)
{
变量a、i、标题、fname、lname、性别、地址、电子邮件、用户名、密码、确认、错误、检查、类型、联系人、日期;
变量reg=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+*)(\'+\”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.];
var matches=/^(\d{2})[-\/](\d{2})[-\/](\d{4})$/.exec(日期);
a=0;
检查=错误;
错误=错误;
//其他代码
日期=document.getElementById('date')。值;
//其他代码
if(匹配==null)
警报(“请输入有效的出生日期”);
返回false;
var d=匹配项[2];
var m=匹配[1]-1;
变量y=匹配项[3];
var composedDate=新日期(y、m、d);
返回composedDate.getDate()==d&&
composedDate.getMonth()==m&&
composedDate.getFullYear()==y;
下面是我的html

    <form name="myForm" method="post" action="sub.html" onsubmit="return validateForm();">
    <fieldset>

    <p>Last Name:<input id="lastname" type="text" name="lname" size="40" placeholder="Last Name"/>*</p>

    <p>Sex: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Male <input id="mletter" type="radio" name="sex" value="male"/> &nbsp; &nbsp; Female <input id="fletter" type="radio" name="sex" value="female"/>*</p>

    <p>Date Of Birth: <input id="date" type="text" name="dob" placeholder="MM-DD-YYYY"/>*</p>

    <p>Address: &nbsp; &nbsp; <textarea id="address" rows="4"  cols="40" ></textarea>*</p>


    </fieldset>
    </form>

姓氏:*

性别:男女*

出生日期:*

地址:*


在获取日期的值之前,您正在检查格式

另外,
if
可能需要一些大括号来包含
returnfalse

var matches, date;
//other codes
date=document.getElementById('date').value;
matches = /^(\d{2})[-\/](\d{2})[-\/](\d{4})$/.exec(date);
if(matches === null){
    alert('wrong date format');
    return false;
}
要检查无效的日期字符串格式,请首先获取要检查的日期字符串

date=document.getElementById('date').value;
然后用
regexp

matches = /^(\d{2})[-\/](\d{2})[-\/](\d{4})$/.exec(date);

不要按相反的顺序执行。

但是这样做我将无法检查代码中的无效日期,在您执行
exec
时,变量
date
未定义的
或没有任何值。因此每次
匹配
都将是
null
无论您输入什么日期。我可以举个例子吗请