以前写了几个日期格式的验证,但是都不太完美。在网上搜了一下,并测试了这个用正则表达式的验证,非常完美其,而且还有瑞年判断。(代码并非本人所写)
1、用正则表达式验证日期格式(C#)
/**/
/// <summary>
/// 验证日期格式
/// </summary>
/// <param name="dtime">日期字符串</param>
/// <returns>bool</returns>
public static bool IsDateTime( string dtime)
... {
bool flag = true;
string strMode = @"^((d{2}(([02468][048])|([13579][26]))[-/s]?
((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|
(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))|
(0?2[-/s]?((0?[1-9])|([1-2][0-9])))))|(d{2}(([02468][1235679])|
([13579][01345789]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|
([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|
(30)))|(0?2[-/s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
Regex dt = new Regex(strMode,RegexOptions.Compiled);
Match m = dt.Match(dtime);
if(!m.Success)
...{
flag = false;
}
return flag;
}
/// 验证日期格式
/// </summary>
/// <param name="dtime">日期字符串</param>
/// <returns>bool</returns>
public static bool IsDateTime( string dtime)
... {
bool flag = true;
string strMode = @"^((d{2}(([02468][048])|([13579][26]))[-/s]?
((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|
(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))|
(0?2[-/s]?((0?[1-9])|([1-2][0-9])))))|(d{2}(([02468][1235679])|
([13579][01345789]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|
([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|
(30)))|(0?2[-/s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
Regex dt = new Regex(strMode,RegexOptions.Compiled);
Match m = dt.Match(dtime);
if(!m.Success)
...{
flag = false;
}
return flag;
}
2、JavaScript 实现的日期格式验证
<
script language
=
"
javascript
"
type
=
"
text/javascript
"
>
function ChkBirthday(sender, args)
... {
var check=/^([1-2]d...{3})-(0?[1-9]|11|12|10)-([1-2]?[0-9]|0[1-9]|30|31)$/;
if(Form1.Birthday.value!="")
if (!check.exec(Form1.Birthday.value))
...{
args.IsValid = false;
}
else
...{
var y=(Form1.Birthday.value).split("-")[0];
var m=(Form1.Birthday.value).split("-")[1];
var d=(Form1.Birthday.value).split("-")[2];
if(m==1||m==3||m==5||m==7||m==8||m==10|m==12)
...{
if(d<0||d>31)
...{
args.IsValid = false;
}
else
...{
args.IsValid = true;
}
}
else
...{
if(m==2) //平月
...{
if(y%400==0||(y%4==0&&y%100!=0)) //闰年
...{
if(d<1||d>29)
...{args.IsValid = false;}
else
...{args.IsValid = true;}
}
else //平年
...{
if(d<1||d>28)
...{args.IsValid = false;}
else
...{args.IsValid = true;}
}
}
else //小月
...{
if(d<1||d>30)
...{args.IsValid = false;}
else
...{args.IsValid = true;}
}
}
}
}
// -->
</ script >
function ChkBirthday(sender, args)
... {
var check=/^([1-2]d...{3})-(0?[1-9]|11|12|10)-([1-2]?[0-9]|0[1-9]|30|31)$/;
if(Form1.Birthday.value!="")
if (!check.exec(Form1.Birthday.value))
...{
args.IsValid = false;
}
else
...{
var y=(Form1.Birthday.value).split("-")[0];
var m=(Form1.Birthday.value).split("-")[1];
var d=(Form1.Birthday.value).split("-")[2];
if(m==1||m==3||m==5||m==7||m==8||m==10|m==12)
...{
if(d<0||d>31)
...{
args.IsValid = false;
}
else
...{
args.IsValid = true;
}
}
else
...{
if(m==2) //平月
...{
if(y%400==0||(y%4==0&&y%100!=0)) //闰年
...{
if(d<1||d>29)
...{args.IsValid = false;}
else
...{args.IsValid = true;}
}
else //平年
...{
if(d<1||d>28)
...{args.IsValid = false;}
else
...{args.IsValid = true;}
}
}
else //小月
...{
if(d<1||d>30)
...{args.IsValid = false;}
else
...{args.IsValid = true;}
}
}
}
}
// -->
</ script >