用正则表达式匹配输入的时间是否正确,包括年月日,时分。谢谢!
解决方案 »
- 为何 Treeview 下的的节点点一下就进入Label 编辑状态?
- 在dataGridView1某单元格刚输入的值还处在编辑状态中,按enter键获取改单元格的值,怎么实现啊?
- 关于xxxCompleted方法中赋值取值的问题
- Visual Studio开发工具实现拖控件自动在Designer.cs生成相应代码的原理是什么?
- 各位C#大虾,小弟想在GridView的RowDeleting事件中得到该行所绑定的DataItem,但总为空,怎么写的啊???
- 求使用c#进行软件开发过程中遇到问题的答案
- WinForm 隐藏控制栏
- 数据库操作一定要用DataSet吗,只用DataTable可以吗
- WPF RenderTransform 问题
- 有没有c#的高手,懂得关于数据库的
- 怎样利用表A的数据更新表B?
- wince上用什么控件来展示数据
日期:是闰年的情况,一年只有12个月,一个月内有多少天(包括闰年)
时间:可以验证一天只有24小时、60分、60秒,AM、PM
DateTime.ParseExact
考虑闰年
^(?:(?:(?:(?:(?:1[6-9]|[2-9][0-9])?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(?:0229))|(?:(?:(?:1[6-9]|[2-9][0-9])?[0-9]{2})(?:(?:(?:0[13578]|1[02])31)|(?:(?:0[13-9]|1[0-2])(?:29|30))|(?:(?:0[1-9])|1[0-2])(?:0[1-9]|1[0-9]|2[0-8]))))$
(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$
时间部分
够清楚了吧?
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="*" ValidationExpression="^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$" ControlToValidate="TextBox1"></asp:RegularExpressionValidator>
是这样的吧?
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>//这是一个TextBox控件,看的懂吧!<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="*" ValidationExpression="^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$" ControlToValidate="TextBox1"></asp:RegularExpressionValidator>RegularExpressionValidator //是一个验证控件,
ErrorMessage="*" //验证出错是显示的提示,可以等于 * ,也可以等于其他的,包括文字,
ValidationExpression="^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$" // ValidationExpression= “输入的正则表达式”
ControlToValidate="TextBox1" //验证的是哪个控件!
这样的解释够清楚了不??
DateTime.Parse(string);
DateTime.TryParse(string,out DateTime);
string time = "2010-7-13 13:33:55";
DateTime dt = DateTime.Parse(time); //如果有错误会抛出异常
time = "2010-7-13 13:33:23223";
if (DateTime.TryParse(time, out dt)) //如果有异常不会抛出异常
{
//执行
}
-(?:(?:0[1-9])|(?:1[0-2]))月
-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) 日
(?:(?:[0-2][0-3])|(?:[0-1][0-9])) 时
:[0-5][0-9] 分 00-59
:[0-5][0-9]$ 秒 00-59
后面的,分,秒 理解,
知道(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
前面的年 ,月,日,时,不怎么理解,表达式具体什么含义啊?当然他们的取值范围是知道的。麻烦您了!
您好,使用您的代码 ,为什么会报错说:
DateTime dt = DateTime.Parse (time);
该字符串未被识别为有效的 DateTime呢?谢谢!这是在aspx.cs中的代码,TextBox1是前台的空间,用于输入时间!
string time = this.TextBox1.Text.ToString ();
DateTime dt = DateTime.Parse (time); if (DateTime.TryParse(time, out dt))
{
Alter(this.Page, "时间格式正确");
}
else
{
Alter(this.Page, "时间格式不正确");
}
月限制在1~12之间
日限制在1~31之间
{
if ((0 == year%4 && 0 != year%100) ||
(0 == year%100 && 0 ==year%400) &&
(0 != year%3200))
{
return (0);
}
else
{
return (1);
}
}同时只能被4或100其中一个整除的是闰年。
如果正则可以实现,那可能是我不知道的写法了。我想不出如何能实现。即便真能实现,想一下,要根据是否是闰年,来匹配2月的天,这将依然是个很复杂的事情。我假设你毅力坚强,依然实现了这个(我所知道的,要么js的|符号分割匹配2种情况,要么用.net的平衡组)。那你这个正则将不少于200个字符,这样的正则和用简单正则匹配一下,在用DateTime.Parse来检验规则,哪个合理呢?
(不懂就别瞎说,这句我赞同。)