`

验证有效 "日期时间" 的正则表达式(已解决闰二月)

阅读更多

^((\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]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$

C# Code Test:

public class Class1
{
static void Main(string[] args)
{
//string regex = @"^((\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]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$";
string regex = @"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578]
)|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[4
69])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\
s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([1
3579][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 += @"(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$"; //时间部分
System.Text.RegularExpressions.RegexOptions options = ((System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace | System.Text.RegularExpressions.RegexOptions.Multiline) | System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(regex, options);

string s = "2003-02-29 23:59:59";
System.Console.Out.WriteLine(s + " {0}",reg.IsMatch(s));

s = "2004-02-29 23:59:59";
System.Console.Out.WriteLine(s + " {0}",reg.IsMatch(s));

s = "2004-04-30 0:59:59";
System.Console.Out.WriteLine(s + " {0}",reg.IsMatch(s));

s = "2004-04-30 01:11:0";
System.Console.Out.WriteLine(s + " {0}",reg.IsMatch(s));

s = "2004-04-30 0:0:0";
System.Console.Out.WriteLine(s + " {0}",reg.IsMatch(s));

s = "2004-04-30 00:00:00";
System.Console.Out.WriteLine(s + " {0}",reg.IsMatch(s));
}
}

//Java Code Test

import java.util.regex.*;
class Class1
{
public static void main(String[] args)
{
Pattern p = Pattern.compile("^((\\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]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");

String s = "2003-02-29 23:59:59";
System.out.println(s + " " + p.matcher(s).matches());

s = "2004-02-29 23:59:59";
System.out.println(s + " " + p.matcher(s).matches());

s = "2004-04-31 0:59:59";
System.out.println(s + " " + p.matcher(s).matches());

s = "2004-04-30 01:11:0";
System.out.println(s + " " + p.matcher(s).matches());

s = "2004-04-30 0:0:0";
System.out.println(s + " " + p.matcher(s).matches());

s = "2004-04-30 00:00:59";
System.out.println(s + " " + p.matcher(s).matches());
}
}

分享到:
评论

相关推荐

    关于日期的正则表达式

    - **与年份相关的日期**:包括平年在内的所有年份除2月外都包含29日的正则表达式较为复杂,需要结合闰年的判断。 下面是一个综合上述规则的日期正则表达式示例,它适用于 `yyyy-MM-dd` 的日期格式,并包含了对闰年...

    日期正则表达式(很实用)

    日期格式验证是正则表达式常见应用场景之一,尤其是在表单验证、数据清洗等领域。本文将详细介绍几种常用的日期正则表达式及其原理。 #### 二、简单日期格式验证 ##### 1. YYYY/MM/DD 格式的日期验证 最基础的...

    正则表达式(日期校验)

    本文将详细介绍如何使用正则表达式来验证日期格式,并通过两个具体的示例来展示其用法。 #### 二、基础知识回顾 在深入了解具体实现之前,我们先简要回顾一下正则表达式的相关概念以及JavaScript中的日期对象。 #...

    万能日期正则表达式 (适用于各种日期样式)绝对经典

    #### 二、万能日期正则表达式的特点 该正则表达式的设计目标是尽可能地覆盖各种日期格式,包括但不限于: - 年-月-日 (yyyy-MM-dd) - 月-日-年 (MM-dd-yyyy) - 日-月-年 (dd-MM-yyyy) - 支持月份的数字形式 (MM) 和...

    C# 正则应用之——最全的日期正则表达式 没有之一

    针对闰年的情况,我们可以进一步完善上述正则表达式,使其能够正确处理2月29日的情况。具体的实现方法是,先构建一个基本的日期正则表达式,然后在此基础上添加闰年的特殊判断逻辑。 #### 总结 本文详细介绍了如何...

    正则表达式验证工具,正则表达式校验工具

    正则表达式验证工具 V1.0 本软件主要用于检测正则表达式是否正确。 运行环境:本软件为绿色软件,无需安装,但需要Microsoft .NET Framework 4 支持,如果没有请前去下载(下载路径:...

    验证日期的正则表达式比较全面地验证

    ### 二、正则表达式验证日期的通用规则 正则表达式用于验证日期的关键在于正确构建表达式以覆盖所有可能的合法日期格式。以下是一些通用的规则: 1. **年份验证**:由于年份范围从公元0001年至9999年,因此年份的...

    正则表达式验证金额格式

    在IT行业中,正则表达式...总的来说,正则表达式在验证金额格式时发挥着重要作用,它能有效地确保输入数据的正确性,从而避免因格式错误引发的问题。理解并掌握正则表达式对于任何IT从业者来说都是非常重要的技能。

    使用正则表达式验证一年的12个月份

    在IT行业中,正则表达式是处理字符串时不可或缺的一部分,尤其在数据验证、文本提取等方面。在这个场景中,我们需要创建一个正则表达式来验证输入是否符合一年12个月份的格式。 首先,我们要明确一年中的12个月份的...

    正则表达式转换工具

    - 数据验证:在表单提交时,可以使用正则表达式验证输入格式,如邮箱、电话号码等。 - 文件搜索:在代码编辑器中,使用正则表达式快速查找和替换特定模式的文本。 - 数据清洗:在数据预处理阶段,正则表达式可以...

    PB实现的正则表达式

    通过研究这个文件,开发者可以了解如何在PowerBuilder 11.5中构建自己的正则表达式解决方案。 在PowerBuilder中,没有内置的正则表达式引擎,因此通常需要借助第三方库,如PBDOM、PBRegex等。这些库提供了类似Java...

    pb 使用正则表达式源码pbregexp

    标题中的“pb 使用正则表达式源码pbregexp”指的是在PowerBuilder(简称pb)环境中,利用名为“pbregexp”的正则表达式组件来实现源代码级别的正则表达式操作。PowerBuilder是一款流行的可视化的、面向对象的软件...

    jq非空验证,js正则表达式验证邮箱和手机号码

    在本案例中,我们关注的是使用jQuery(jq)进行非空验证,以及使用JavaScript(js)的正则表达式来验证邮箱和手机号码的正确性。以下是关于这些知识点的详细说明: 1. **jQuery(jq)非空验证**: jQuery是一种轻...

    日期验证的正则表达式很好用

    ### 日期验证的正则表达式详解 在软件开发中,日期格式的验证是一项常见的需求。本文将深入探讨一种用于验证“YYYY-MM-DD”格式日期的正则表达式,并通过C#语言的具体实现来解析其背后的逻辑和技术要点。 #### 一...

    正则表达式(Deelx版)|正则表达式(Deelx版)支持库

    正则表达式(Deelx版)是一种强大的文本处理工具,它允许程序员和用户通过预定义的模式来匹配、查找、替换或者分析字符串。Deelx版是专门为提高正则表达式性能和功能而设计的一个支持库,适用于各种编程语言和应用场景...

    c++写的正则表达式验证工具

    首先,Boost库是C++的一个开源库,提供了许多实用的功能,如智能指针、多线程支持、日期时间处理以及我们关注的正则表达式等。Boost库的正则表达式组件,即`boost::regex`,是C++实现正则表达式的常用选择之一,它...

    VC、VC++,MFC 正则表达式类库

    例如,你可以创建一个`CRegEx`对象,用字符串初始化表达式,然后调用`Compile`方法来验证该表达式是否有效。 2. `CMATCH`:这个类通常用于存储匹配结果,包含了关于匹配成功与否的信息,以及匹配的子串和位置。 3....

    正则式工具(自动生成正则表达式)

    正则式,全称为“正则表达式”,是编程领域中一种强大的文本处理工具,用于匹配、...通过不断实践和学习,你可以更熟练地运用正则表达式解决实际问题,无论是数据提取、文本过滤还是验证用户输入,都将变得轻松自如。

    只验证数字和字母的正则表达式

    2. **安全性**:虽然该正则表达式能有效过滤非法字符,但在实际应用中还需结合其他安全措施来进一步增强系统的安全性。 3. **用户体验**:合理的错误提示信息能够帮助用户更好地理解输入要求,提升用户体验。 综上...

    正则表达式测试工具C#版(src)

    在C#编程语言中,正则表达式被广泛应用于数据验证、文本提取、格式转换等多个场景。本项目提供了一个C#编写的正则表达式测试工具,包含完整的源代码,可以帮助开发者调试和测试他们的正则表达式,支持查找和替换功能...

Global site tag (gtag.js) - Google Analytics