如何在asp.net regularExpressionValidator中以dd-mon-yyyy格式验证日期输入?

时间:2009-05-03 17:45:22

标签: asp.net nhibernate validation

我真的需要dd-mon-yy格式,因为我的oracle数据库接受这种格式的日期。

我可以在RegularExpressionValidator中像那样验证吗?

而且,当使用nhibernate时,我是否必须将文本框值转换为oracle数据时间格式?

非常感谢你的帮助;

3 个答案:

答案 0 :(得分:3)

尝试

Regx.ValidationExpression=@"^(([1-9])|(0[1-9])|(1[0-2]))\-((0[1-9]) |([1-31]))\-((\d{2})|(\d{4}))$";

您可以尝试使用此自定义验证器

protected void CustomValidator1_ServerValidate(对象源,ServerValidateEventArgs args) {

DateTime结果;

if(!DateTime.TryParse(args.Value,out result))

{

args.IsValid = false;

返回;

} else args.IsValid = true;

}

答案 1 :(得分:2)

是否有必要强制用户以Oracle数据库禁止的格式输入数据?只要用户输入有效日期,您就可以将输入解析为DateTime对象,然后调用ToString(“dd-MMMM-yy”)以生成数据库所需格式的日期表示。这使您可以自由地提供更多用户友好的方法来收集用户的输入,例如日期/时间选择器类型控件。

答案 2 :(得分:1)

对于年份的两位数,请尝试:

^([012]?\d|3[01])-([Jj][Aa][Nn]|[Ff][Ee][Bb]|[Mm][Aa][Rr]|[Aa][Pp][Rr]|[Mm][Aa][Yy]|[Jj][Uu][Nn]|[Jj][Uu][Ll]|[Aa][Uu][Gg]|[Ss][Ee][Pp]|[Oo][Cc][Tt]|[Nn][Oo][Vv]|[Dd][Ee][Cc])-\d\d$

年份有四位数字:

^([012]?\d|3[01])-([Jj][Aa][Nn]|[Ff][Ee][Bb]|[Mm][Aa][Rr]|[Aa][Pp][Rr]|[Mm][Aa][Yy]|[Jj][Uu][Nn]|[Jj][Uu][Ll]|[Aa][Uu][Gg]|[Ss][Ee][Pp]|[Oo][Cc][Tt]|[Nn][Oo][Vv]|[Dd][Ee][Cc])-(19|20)\d\d$

这些表达意味着:

  • 0或1或2后跟一个数字,或3加0或1
  • next a dash
  • 这个月它'试用'JAN,JAn,Jan,jan等的所有组合......所有十二个月
  • next a dash
  • 最后它预计'yyyy'版本的两个数字或19或20后跟两个数字'yy'版本