【问题标题】:How to check date validation in regex using js? [duplicate]如何使用 js 检查正则表达式中的日期验证? [复制]
【发布时间】:2017-01-13 07:13:15
【问题描述】:

我正在尝试以 js ("yyyy/mm/dd") 格式验证日期。谷歌搜索后,我发现检查了其他日期格式,但我无法获得这种格式。

任何人都可以帮助我。

这是我的代码。

function dateChecker()
{
    var date1, string, re;
    re = new RegExp("\d{4}/\d{1,2}/\{1,2}");

    date1 = document.getElementById("visitDate").value; 
    if(date1.length == 0)
    {
        document.getElementById("showError").innerHTML = "Plz Insert Date";
        document.getElementById("showError").style.color = "red";
    }
    else if(date1.match(re))
    {
        document.getElementById("showError").innerHTML = "Ok";
        document.getElementById("showError").style.color = "red";
    }
    else
    {
        document.getElementById("showError").innerHTML = "It is not a date";
        document.getElementById("showError").style.color = "red";
    }

}   

【问题讨论】:

  • 如果整个字符串应该匹配,请使用re=/\d{4}\/\d{1,2}\/\d{1,2}/re=/^\d{4}\/\d{1,2}\/\d{1,2}$/\{1,2} 是一个错字,如果您需要使用构造函数符号,则将反斜杠加倍。不过,您不会以这种方式验证日期,只需检查字符串是否看起来像日期。
  • 使用 moment.js,正则表达式不适合日期验证。在 moment.js 中,您可以执行类似 isValid 函数的操作。
  • 对不起!它们都不适合我。
  • 如果你使用momentjs,你可以这样做 const date = moment('01-01-2021', 'DD-MM-YYYY', true) date.isValid() // true

标签: javascript regex date


【解决方案1】:

试试这个:

var date = "2017/01/13";
var regex = /^[0-9]{4}[\/][0-9]{2}[\/][0-9]{2}$/g;
console.log(regex.test(date));    // true
console.log(regex.test("13/01/2017")); //false
console.log(regex.test("2017-01-13")); // false

【讨论】:

    【解决方案2】:

    如果您使用new RegExp,那么您必须对生成的正则表达式对象调用编译。

    re = new RegExp("\d{4}/\d{1,2}/\d{1,2}");
    re.compile();
    

    或者,您可以这样编写正则表达式,不需要调用 compile

    re = /\d{4}\/\d{1,2}\/\d{1,2}/;
    

    编辑

    请注意,上述正则表达式不正确(即它可以批准无效日期)。我想简短的答案是,不要使用正则表达式来验证日期时间。使用一些日期时间库,如 momentjsdatejs。有太多的逻辑。例如,您如何处理闰年,不同月份有不同的可能天数等等。这只是一种痛苦。使用可以解析的库,如果无法解析,则不是日期时间。信任图书馆。

    但是你可以通过这样的方式更接近

    re = /^\d{4}\/(10|11|12|\d)\/((1|2)?\d|30|31)$/;
    

    另外,如果您想熟悉正则表达式,请下载Expresso

    【讨论】:

    • 谢谢,但我正在检查日期是否有效“9999/99/99”
    • 查看答案编辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2011-12-31
    相关资源
    最近更新 更多