Мне нужно сделать проверку даты, чтобы принять ее в формате dd/mm/yyyy. Однако все условия работает нормально, за исключением того, если я введу год 6 цифр он также принимая его, как -Дата подтверждения валидации
12/12/200000
согласно мой код является действительным. Ниже приведен мой код:
function validate(value) {
if(!value.match(/\d\d\/\d\d\/\d\d\d\d/))
return false;
return checkdate(value);
}
function checkdate(val)
{
var dates = val.split(/\D/);
if(dates[0] <= 0 || dates[0] > 31)
return false;
if(dates[1] <= 0 || dates[1] > 12)
return false;
var now = new Date(dates[2],dates[1]-1,dates[0]);
if (isNaN(now))
return false;
now.setHours(0,0,0,0);
if (now.getFullYear() == dates[2] && now.getMonth() + 1 == dates[1] && now.getDate() == dates[0])
return true;
return false;
}
Я не уверен, почему он разрешает год как 6 цифр действительного ввода?
Ваш раскол, вероятно, не правильно. Ничто не будет соответствовать вашему расколу – Dummy
Но reg exp не должен допускать код до этой точки – Prakash
Создайте регулярное выражение, подобное этому 'var regExp =/\ d {2} \/\ d {2} \/\ d {4} /' затем проверьте его с помощью функции match(), тогда вам не нужно создавать какую-либо дополнительную функцию для проверки действительности каждой поданной – Dummy