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

时间:2013-03-14 11:00:27

标签: javascript

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

我使用以下代码进行验证,但它始终显示警报。

我的代码出了什么问题?

当我用的时候, var bevalue = '10 / 10/1989'; 它工作正常。

在我使用的代码中, value = $(this).val(); 获取价值。

然后将其转换为字符串

编辑:

$('input, textarea').live('blur', function () {
        var field = $(this).attr('name');
        var value = $(this).val();

if(field=='birthday')
  {   
        var bevalue = String(value);   
        var regbday =/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d+$/;
        if(regbday.test(bevalue) == false)
        {
            alert('please Enter Birth date in dd/mm/yyyy');
           return false;
        }
}

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

2 个答案:

答案 0 :(得分:1)

正则表达式不正确,

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")));

这应该有效,这是JSBIn

的一个例子

修改
如果您只想匹配使用/作为分隔符的日期,请将正则表达式更改为
/(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d/

答案 1 :(得分:0)

你有一个错误的reg-exp,日期和月份部分被切换,一些字符没有被转义。

使用此公式:

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