验证⽇期时间格式的正则表达式
//判断⽇期:年-⽉-⽇(2005.12.25、2005年12⽉2号、2005/10/23,2005-11-28)、年-⽉(05年12⽉)、⽉-⽇(12-30、10/30、10.30、10⽉30号)
private static System.Text.RegularExpressions.Regex reg_isDate=new System.Text.RegularExpressions.Regex ("^(?:(31)(\\D)(0? [13578]|1[02])\\2|(29|30)(\\D)(0?[13-9]|1[0-2])\\5|(0?[1-9]|1\\d|2[0-8])(\\D)(0?[1-9]|1[0-2])\\8)((?:1[6-9]|[2-9]\\d)?\\d{2})$|^(29)(\\D)(0?
2)\\12((?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:16|[2468][048]|[3579][26])00)$");
/// <summary>
/// 验证时间格式:12:23:34或00:00:1或8:3:42
/// </summary>
private static System.Text.RegularExpressions.Regex reg_isTime=new Regex(@"^((0?\d|1[0-9]|2[0-3])|((0?\d|1[0-9]|2[0-3]):(0?\d|[0-5]\d)(: (0?\d|[0-5]\d)){0,1}))$");
/// <summary>
/// 判断⽇期:年-⽉-⽇(2005.12.25、2005年12⽉2号、2005/10/23,2005-11-28)、年-⽉(05年12⽉)、⽉-⽇(12-30、10/30、10.30、10⽉30号)
/// </summary>
/// <param name="expression"></param>
/// <returns></returns>
public static bool IsDate(ref string expression)
{
string text=expression;
bool existDay=true;//当⽇期格式为05年12⽉时使⽤。
//格式转换======================
int indexExist=text.IndexOf('-');
if(indexExist<0)
{
indexExist=text.IndexOf('/');
if(indexExist>0)
{
text=text.Replace('/','-');
}// ⽇期以‘/’为分隔符,将其转换为‘-’
else
{
indexExist=text.IndexOf(".");
if(indexExist>0)
{
时间正则表达式java
text=text.Replace(".","-");
}// ⽇期以‘.’为分隔符,将其转换为‘-’
else
{
indexExist=text.IndexOf("⽉");
if(indexExist>0)
{
existDay=text.IndexOf("号")>0||text.IndexOf("⽇")>0?true:false;
text=text.Replace('年','-');
text=text.Replace('⽉','-');
text=text.Replace("⽇","");
text=text.Replace("号","");
}// ⽇期以‘年,⽉,⽇’为分隔符,将其转换为‘-’
}//else ⽇期不是以‘.’为分隔符
}//else ⽇期不是以‘/’为分隔符
}//else ⽇期不是以‘-’为分隔符
//====================格式转换
int index=text.IndexOf('-');
if(index>0)
{
if(!existDay)//2005年12⽉或05年12⽉
{
text=text+System.DateTime.Now.Day.ToString();
index=text.IndexOf('-');
}
else if(text.Length<6) //只有⽉和⽇,添加系统⽇期的年份
{
text=System.DateTime.Now.Year.ToString()+"-"+text;
index=text.IndexOf('-');
}
//将年⽉⽇换为⽇⽉年,供判断
string year=text.Substring(0,index);
text=text.Remove(0,index);
string day=text.Substring(text.LastIndexOf('-')+1);
text=text.Remove(text.LastIndexOf('-')+1,day.Length);
text=day+text+year;
}//if index
if(reg_isDate.Match(text).Success)
{
expression=text;
return true;
}
else
{
return false;
}
}//public
/// <summary>
/// 验证时间格式:12:23:34或00:00:1或8:3:42,12点23分23秒,12点,12点23分 /// </summary>
/// <param name="expression"></param>
/// <returns></returns>
public static bool IsTime(ref string expression)
{
string text=expression;
if(text.IndexOf(":")<0)
{
int fenIndex=text.IndexOf("时");
int dianIndex=text.IndexOf("点");
int index=fenIndex>0?fenIndex:dianIndex;
if(index>0&&text.Length>index+1)
{
text=text.Replace("时",":");
text=text.Replace("点",":");
//判断分的格式
if(text.IndexOf("分")>0)
{
if(text.Length>(text.IndexOf("分")+1))
{
text=text.Replace("分",":");
//判断秒的格式
if(text.IndexOf("秒")>0&&text.Length<=(text.IndexOf("秒")+1))
{
text=text.Replace("秒","");
}
else//有“秒”的值,但没有“秒”这个字符
{
text+="time Error";
}
}
else//没有秒
{
text=text.Replace("分","");
}
}
else //有“分”的值,但没有“分”这个字符
{
text+="time Error";
}
}// if 时
else
{
text=text.Replace("时","");
text=text.Replace("点","");
}// else if index
}//if text.IndexOf(":")
if(reg_isTime.Match(text).Success) {
expression=text;
return true;
}
else
{
return false;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论