我有一个用来验证日期的正则表达式:
^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$工作得很好,但是我在asp.net正则表达式验证器中到处使用它,我想最小化它,这样我就可以减小页面大小。它使用dd/mm/yyyy格式并处理闰年。我正在寻找一种更简洁的正则表达式语句。
发布于 2010-05-28 04:24:30
这个怎么样:
^(\d{1,2})\/(\d{1,2})\/(\d{4})$然后,一旦你得到了数字,使用程序逻辑来验证日期是否有意义。正如您已经注意到的,在您的正则表达式中尝试这样做是疯狂的。
发布于 2010-05-28 04:24:56
您只需创建一个具有DateValidator方法并使用此正则表达式的类,其他所有人都可以引用该类/方法。
如果你不能创建一个新的类来包含这个验证,你能不能至少把它隐藏在一个全局字符串常量后面?
这样,如果您更改了正则表达式,您只需在1个位置更改它,而不是在1000个位置。
发布于 2010-05-28 04:27:22
伙计,解析和验证是有区别的。我会把这两个分开。正则表达式可以很好地将date解析为date对象。使用其他东西来确定它是否引用了一个存在的时间点,即它是否有效。
https://stackoverflow.com/questions/2924581
复制相似问题