<INPUT TYPE="text" NAME="" value="2014-01" onchange="fun(this.value)"> function fun(str){ var reg = /^\d{4}-((0[1-9])|(1[0-2]))$/; if(!reg.test(str)) alert("错误"); }
var reg = /^(\d{4}|\d{2})-(0?[1-9]|1[012])$/
换个思路呗 function isValidDate(dateString) { // First check for the pattern if(!/^\d{4}\/\d{2}\/\d{2}$/.test(dateString)) //YYYY/MM/DD return false; // Parse the date parts to integers var parts = dateString.split("/"); var day = parseInt(parts[2], 10); var month = parseInt(parts[1], 10); var year = parseInt(parts[0], 10); // Check the ranges of month and year if(year < 1000 || year > 3000 || month == 0 || month > 12) return false; var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; // Adjust for leap years if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) monthLength[1] = 29; // Check the range of the day return day > 0 && day <= monthLength[month - 1]; //return new Date(input) instanceof Date } 我这个是测 YYYY/MM/DD的, 你要测的话,把/的地方改成- 然后,传入参数不管是啥,后面加上个 "-01",模拟成1号传进去测呗其实肯定有方法,不过这个更通用,往上凑呗
var reg = /^\d{4}-(0[1-9]|1[012])(-\d{2})*$/;
/^(\d{4}|\d{2})-( (0?[1-9]) | (1[0-2]) )$/ 这个只能验证-01月到09月/^(\d{4}|\d{2})-( (1[0-2] ) | (0?[1-9]) )$/ 这个只能验证10到12月 貌似把两个整合下就好了 后面的符号 | 没起作用
<INPUT TYPE="text" NAME="" value="2014-01" onchange="fun(this.value)">
function fun(str){
var reg = /^\d{4}-((0[1-9])|(1[0-2]))$/;
if(!reg.test(str)) alert("错误");
}
function isValidDate(dateString) {
// First check for the pattern
if(!/^\d{4}\/\d{2}\/\d{2}$/.test(dateString)) //YYYY/MM/DD
return false; // Parse the date parts to integers
var parts = dateString.split("/");
var day = parseInt(parts[2], 10);
var month = parseInt(parts[1], 10);
var year = parseInt(parts[0], 10); // Check the ranges of month and year
if(year < 1000 || year > 3000 || month == 0 || month > 12)
return false; var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; // Adjust for leap years
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
monthLength[1] = 29; // Check the range of the day
return day > 0 && day <= monthLength[month - 1];
//return new Date(input) instanceof Date
}
我这个是测 YYYY/MM/DD的,
你要测的话,把/的地方改成-
然后,传入参数不管是啥,后面加上个 "-01",模拟成1号传进去测呗其实肯定有方法,不过这个更通用,往上凑呗