求高手帮忙写这样的一个字符串验证。
是一个表示时间的字符串:是固定的这样的格式:2010.5.1 20:30 2010.12.31 21:23就是写一个这样的验证函数,就是要符合常理,比如4月只有三十天 输入4.31 就是错的。。
求高手帮忙写一个不胜感激哈
是一个表示时间的字符串:是固定的这样的格式:2010.5.1 20:30 2010.12.31 21:23就是写一个这样的验证函数,就是要符合常理,比如4月只有三十天 输入4.31 就是错的。。
求高手帮忙写一个不胜感激哈
{
dStr=dStr.replace(/\./g,"/")
if(new Date(dStr).toString()=="NaN")return false;
else return true;
}
//测试用例
if(!checkDate("2008.5.1 3:15:13"))alert("时间类型错误!=====测试1");
if(!checkDate("2008.5.100 93:15:13"))alert("时间类型错误!=====测试2");
if(!checkDate("2008.13.1 93:15:13"))alert("时间类型错误!=====测试3");
{
dStr=dStr.replace(/\./g,"/");
d = new Date(dStr).toString();
if(d=="NaN" || d =="Invalid Date")return false;
else return true;
}
为了兼容chrome,改成这样
说一下啊,就是我的那个“2010.5.1 20:30”是通过表单获取传过来的,那个是我强制用户输入的固定格式。
还有就是麻烦您能解释一下您写得各个步骤么?我是JavaScript菜鸟,懂的太少了
new Date(dStr).toString();//将字符串转换为时间,然后toString
d=="NaN" || d =="Invalid Date"//在ie和ff中,如果转换不成功,就是NaN,在chrome中就是Invalid Date
var data = ["2010.5.1 20:30", "2010.12.31 21:23"];
var reg = /^(?:(?!0000)[0-9]{4}\.(?:(?:0?[1-9]|1[0-2])\.(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\.(?:29|30)|(?:0?[13578]|1[02])\.31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)\.0?2\.29)\s+([01][0-9]|2[0-3]):[0-5][0-9]$/;
for(var i=0;i<data.length;i++)
{
document.write("源字符串:" + data[i] + " 验证结果:" + reg.test(data[i]) + "<br />");
}
</script>
alert(checkDate("2008.5.31 12:30"));
alert(checkDate("2008.5.32 12:30"));
function checkDate(dStr){
dStr=dStr.replace(/[.]/g,"/");
var arr1=dStr.split(/[^\d]+/g);
var d=new Date(dStr);
if(d=="NaN")return false;
var arr2=d.toLocaleString().split(/[^\d]+/g); for(var i=0;i<arr1.length;i++)
if(arr1[i]!=arr2[i])return false;
return true;
}</script>
我是这样写的<form id="formyuyue" name="formyuyue" method="post" action="insert_a.php?<?php $id=$_GET['id']; echo "id=$id"; ?>" onsubmit="return check()" >这哪里有错啊