日期返回的JavaScript验证始终为false

日期返回的JavaScript验证始终为false,javascript,Javascript,我正在尝试验证仅接受dd/mm/yyyy的日期 我已经使用以下代码进行验证,但它总是向我显示警报 我的代码有什么问题 当我使用, var bevalue='10/10/1989'

我正在尝试验证仅接受dd/mm/yyyy的日期

我已经使用以下代码进行验证,但它总是向我显示警报

我的代码有什么问题

当我使用, var bevalue='10/10/1989' 在我使用的代码中, value=$(this.val()以获取价值

然后将其转换为字符串

编辑:


谢谢大家回复我在Regexp中的错误。我接受了答案。

是正则表达式不正确

function checkBday(bevalue) {
    var regbday = /(0[1-9]|[12][0-9]|3[01])[\.\/\-](0[1-9]|1[012])[\.\/\-](19|20)\d\d/;
    if (regbday.test(bevalue) == false) {
        alert(bevalue + ' is not valid\nplease Enter Birth date in dd/mm/yyyy');
        return false;
    }
    return true
}
console.log(checkBday("14.03.2013")) //true
console.log(checkBday("14-03-2013")) //true
console.log(checkBday("14/03/2013")) //true
console.log(checkBday("14.03.12")) //false
console.log(checkBday("12.28.2013")) //false
console.log(checkBday(prompt("Enter Birthday in dd/mm/yyyy")));
这应该行得通,这里有一个例子

编辑
如果只想匹配使用
/
作为分隔符的日期,请将regexp更改为

/(0[1-9]|[12][0-9]|[3[01])\/(0[1-9]| 1[012])\/(19 | 20)\d\d/

您的注册表项错误,日期和月份部分被切换,一些字符没有转义

使用以下公式:

var regbday = /^(0[1-9]|[12][0-9]|3[01])[\- \/\.](0[1-9]|1[012])[\- \/\.](19|20)\d\d+$/;

这是什么?我们需要更多的代码。您应该首先调试以查看
值是多少。dystroy的意思是,您发布的代码不是问题的原因。作为旁注,您应该使用
?:
来防止未使用子表达式时捕获子表达式。我在值为假的情况下对其进行了测试,结果良好。减去最后捕获的无限数量的数字
+
。因此,我可以输入
10/10/12345679
。删除
+
将修复此问题。如果它不起作用,那么
是错误的,为了帮助我们了解您是如何获得值的,比如@dystroy saidI认为他引用的是
dd/mm/yyyy
格式,而不是格式的分隔符,因为他在他的regexp中与
/
-
匹配,所以我想是这样。这个问题措辞古怪。我的坏。Nevermind=),我更新了答案,以防op真的只想匹配
/
var regbday = /^(0[1-9]|[12][0-9]|3[01])[\- \/\.](0[1-9]|1[012])[\- \/\.](19|20)\d\d+$/;