`
clarancepeng
  • 浏览: 191720 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

判断日期是否有效的正则表达式

阅读更多
function isValidDate(dateStr, format) {
   if (format == null) { format = "MDY"; }
   format = format.toUpperCase();
   if (format.length != 3) { format = "MDY"; }
   if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || _
      (format.indexOf("Y") == -1) ) { format = "MDY"; }
   if (format.substring(0, 1) == "Y") { // If the year is first
      var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
      var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
   } else if (format.substring(1, 2) == "Y") { // If the year is second
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
   } else { // The year must be third
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
   }
   // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
   if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
   var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
   // Check to see if the 3 parts end up making a valid date
   if (format.substring(0, 1) == "M") { var mm = parts[0]; } else _
      if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
   if (format.substring(0, 1) == "D") { var dd = parts[0]; } else _
      if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
   if (format.substring(0, 1) == "Y") { var yy = parts[0]; } else _
      if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
   if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
   if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
   var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
   if (parseFloat(dd) != dt.getDate()) { return false; }
   if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
   return true;
}
分享到:
评论

相关推荐

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

    以下是一个包含闰年判断的日期正则表达式示例: ``` ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-...

    经典的判断日期类型的正则表达式

    经典的判断日期类型的正则表达式,并且带闰年闰月的正则表达式

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

    2. **正则匹配**:使用 `Regex.IsMatch` 方法来判断输入字符串是否与给定的正则表达式相匹配。 3. **返回结果**:如果匹配成功,则返回 `true`;否则返回 `false`。 #### 五、总结 通过上述分析,我们可以看到这个...

    电话号码及日期时间提取(正则表达式 C)

    在本项目中,“电话号码及日期时间提取(正则表达式 C)”是一个使用C语言编写的程序,它能够从文本中有效地识别和提取中国大陆的手机号码和固定电话号码,以及简体中文网页中的日期和时间信息。 首先,我们要理解...

    java_zhengze.rar_正则表达式_正则表达式 java

    在实际应用中,我们经常需要处理用户输入,这时可以使用正则表达式来验证输入的有效性。例如,电子邮件地址的验证可以使用如下的正则表达式: ```java String emailRegex = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w...

    易语言日期合法性正则表达式

    在本案例中,"易语言日期合法性正则表达式"是指使用易语言编写的一种验证日期格式是否合法的代码。易语言是中国自主研发的一种简单易学的编程语言,它的目标是让普通用户也能轻松进行程序开发。 日期合法性验证是...

    java 字符串 正则表达式 详细实例代码

    总之,理解和熟练掌握Java中的字符串操作、正则表达式以及日期时间格式化对于任何Java开发者来说都是必不可少的技能。通过实践和不断探索,你将能够编写出更高效、更优雅的代码来处理字符串相关的任务。

    C#实现正则表达式判断

    本项目"**C#实现正则表达式判断**"主要探讨了如何在C#中使用正则表达式进行模式匹配和验证。 首先,我们需要了解正则表达式的基础概念。正则表达式是由字符和特殊符号组成的字符串,这些字符和符号代表了一组可能的...

    正则表达式经典实例

    2. **多语言支持**:书中详细阐述了如何在不同的编程语言和脚本语言中有效使用正则表达式,帮助读者理解不同语言之间正则表达式的API、语法和行为差异。 3. **实际应用案例**:提供了上百个实用的实例,涵盖文本...

    多种net下日期选择方法,另附日期验证的正则表达式

    如果您想验证格式为2010/04/24,2010.04.24的日期,请参考压缩包里的“正则应用之——日期正则表达式.doc”文件。您可以根据自己的需要修改。 这个实例是在vs2008下进行的(net 3.5),如果您使用的是net 2.0,请替换...

    易语言日期合法性正则表达式.rar

    易语言日期合法性正则表达式.rar 易语言日期合法性正则表达式.rar 易语言日期合法性正则表达式.rar 易语言日期合法性正则表达式.rar 易语言日期合法性正则表达式.rar 易语言日期合法性正则表达式.rar

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

    正则表达式提供了一种强大的文本模式匹配工具,能够帮助开发者快速有效地验证输入数据是否符合预设的格式,如日期格式。 ### 一、日期格式与正则表达式的基本原理 在深入探讨正则表达式的具体应用之前,我们首先...

    powerbuilder正则表达式,取字符串

    powerbuilder正则表达式,可以截取不定字符串。如 string ls_text ls_text = ' date of payment: 01.11.2004 ' …… ls_date = lnvo_re.of_getmatch(ls_text) //'01.11.2004' ls_day = lnvo_re.of_getmatch(ls_text,...

    sql_server 正则表达式

    模式匹配是正则表达式的基本应用,通过简单的语法结构,可以快速判断字符串是否符合预设的模式。在SQL Server 2005中,开发者可以利用CLR UDFs轻松实现这一功能。例如,通过设置`RegexOptions.SingleLine`和`...

    验证日期正则表达式推导方法

    这个正则表达式首先判断年份是否为闰年,然后根据月份和日期进行匹配。虽然复杂,但它可以有效地处理所有合法日期,包括闰年的2月29日。 在实际编程中,可能还需要结合编程语言提供的函数进行更严谨的日期验证,...

    匹配日期的正则表达式

    ### 正则表达式匹配日期详解 #### 一、概述 在进行文本处理时,经常需要验证或提取日期格式的数据。正则表达式作为一种强大的工具,可以用来匹配各种复杂的模式,包括日期。本文将深入解析一个较为复杂的日期匹配...

Global site tag (gtag.js) - Google Analytics