0

我正在尝试验证仅接受 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;
        }
}

感谢大家回复我在正则表达式中的错误。我接受了答案。

4

2 回答 2

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/

于 2013-03-14T11:29:47.443 回答
0

你有错误的正则表达式,日期和月份部分被切换并且一些字符没有被转义。

使用这个公式:

var regbday = /^(0[1-9]|[12][0-9]|3[01])[\- \/\.](0[1-9]|1[012])[\- \/\.](19|20)\d\d+$/;
于 2013-03-14T11:34:14.510 回答