当前位置: 首页 > 面试题库 >

如何编写正则表达式来验证日期?

孔星宇
2023-03-14
问题内容

我正在使用JavaScript,需要弄清楚如何使用正则表达式确定有效日期。

比赛将是:

dd-mm-yyyy
dd-mm-yy

另外,不应接受前导零,例如:

9-8-2010
10-6-99

如何编写正则表达式来做到这一点?


问题答案:

我想出了这个:

function isValidDate(inputDate){

    var myRegex = /^(\d{1,2})([\-\/])(\d{1,2})\2(\d{4}|\d{2})$/;
    var match = myRegex.exec(inputDate);

    if (match != null) {
        var auxDay = match[1];
        var auxMonth = match[3] - 1;
        var auxYear = match[4];
        auxYear = auxYear.length < 3 ? (auxYear < 70 ? '20' + auxYear : '19' + auxYear) : auxYear;
        var testingDate = new Date(auxYear,auxMonth,auxDay);
        return ((auxDay == testingDate.getDate()) && (auxMonth == testingDate.getMonth()) && (auxYear == testingDate.getFullYear()));
    } else return false;
}

适用于dd-mm-yyyydd-mm-yyd-m-yyyyd-m-yy,使用-/作为分隔符



 类似资料:
  • 问题内容: 我想在PHP中测试正则表达式的有效性,最好在使用前进行测试。这样做的唯一方法是实际尝试a 并查看是否返回吗? 有没有更简单/正确的方法来测试有效的正则表达式? 问题答案: 正如用户 pozs 所说,还应 考虑在测试环境中 放在 preg_match() () 前面, 以防止发出警告或通知。 要验证RegExp只需对其运行 (无需知道您要预先测试的数据) 。如果返回显式false(),则

  • 问题内容: 我正在寻找一个正则表达式字符串,该字符串将验证格式为yyyyMMdd(无分隔符)的日期,并且可以用于leap年。我到目前为止发现的最接近的结果仅验证自2000年以来的日期。 问题答案: 我建议使用此页面上所示的:

  • 主要内容:标签属性,JSF验证整数范围实例标签用于将字符串值验证为所需格式。 以下代码显示如何使用标记。 标签属性 属性 说明 pattern 格式化模式 JSF验证整数范围实例 打开 NetBeans IDE 创建一个Web工程:ValidateRegularExpression,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文件:result.xhtml 的代码内容如下所示 - 文件:

  • 我有以下用于javascript密码验证的正则表达式: 正则表达式规则是: 12-25个字符 至少有一个大写字母 至少有一个小写字母 至少有一个数字 至少有一个特殊字符:!#$%()*,-./:;=?@[]^ `{124;}~ 然而,正则表达式似乎不起作用。它匹配任何字符。我该怎么解决这个问题?

  • 问题内容: 我需要使用正则表达式验证格式的日期字符串。 此正则表达式验证,但无效日期无效,例如: 什么是在年支持下验证格式的有效正则表达式? 问题答案: 您粘贴的正则表达式无法正确验证leap年,但同一篇文章中有。我修改了它采取,或。 我在Arun在他的答案 以及此处提供的链接中对其进行了一些测试,它似乎有效。 编辑2019年2月14日:我删除了正则表达式中的逗号,该逗号允许日期如下 29-0,-

  • 问题内容: 我正在寻找允许我验证json的正则表达式。 我对Regex非常陌生,我知道使用Regex进行解析很不好,但是可以用来验证吗? 问题答案: 是的,可以进行完整的正则表达式验证。 大多数现代正则表达式实现都允许递归正则表达式,该正则表达式可以验证完整的JSON序列化结构。该json.org规范使得它非常简单。 它具有PCRE功能,在PHP中效果很好。应该在Perl中保持不变;并且可以肯定地