我正在尝试验证仅接受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中回复我的错误。我接受了答案。
答案 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+$/;