Javascript 用于检查日期格式文本的正则表达式未按预期工作

Javascript 用于检查日期格式文本的正则表达式未按预期工作,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个功能来检查我的html页面的结构的一部分。我主要想确定div元素是否以文本/内容中的日期开头。如果是这样,那么我想修改HTML(但这超出了这个问题的范围) 我的控制如下: function isDate(_date){ const _regExp = new RegExp('^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9]) (2[0-3]|[01][0-9]):([0-5][0-9])?

我有一个功能来检查我的html页面的结构的一部分。我主要想确定div元素是否以文本/内容中的日期开头。如果是这样,那么我想修改HTML(但这超出了这个问题的范围)

我的控制如下:

function isDate(_date){
    const _regExp  = new RegExp('^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9]) (2[0-3]|[01][0-9]):([0-5][0-9])?$');
    return _regExp.test(_date);
}

$(function() {
    var entries = $("div.histEntry");

    console.log('2018-08-01 18:30 is Date? ' + isDate('2018-08-01 18:30'));
    console.log('hungry like a wolf is Date? ' + isDate('hungry like a wolf'));

    $("div.histEntry").each(function( index, value ) {
      console.log('content of div: ' + $(this).text());
      console.log('text to check: ' + $(value).text().substring(0, 17));
      console.log('is Date?: ' + isDate($(value).text().substring(0, 17)));
    });

});
下面是我在控制台中得到的一个片段:

2018-08-01 18:30 is Date? true
hungry like a wolf is Date? false
content of div: 
2019-04-12 13:55 John Doe/Web/ACME created this document
text to check: 
2019-04-12 13:55
is Date?: false
content of div: 
2019-04-15 14:03 Office Manager changed from Jim Joe to Billy Boy
text to check: 
2019-04-15 14:03
is Date?: false
content of div: 
Mikael commented this document
text to check: 
Mikael commented
is Date?: false

为什么2018-08-01 18:30被视为日期而2019-04-15 14:03不被视为日期?

可能您正在测试一个结尾包含空格的字符串。是否尝试检查
$(value).text().子字符串(0,16)
?。以防万一就这么简单。

可能您正在测试一个结尾包含空格的字符串。您是否尝试检查
$(value).text().substring(0,16)
?。以防万一就这么简单。

不要使用
新的RegExp
,除非动态构建RegExp,否则请使用RegExp文本。
$(此).text()
以一个换行符开始,您没有在控制台输出中看到吗?请尝试使用
$(this).text().trim()
删除多余的空白。不要使用
new RegExp
,除非动态构建RegExp,否则请使用RegExp文本。
$(this).text()
以换行符开头,您在控制台输出中没有看到吗?请尝试使用
$(this).text().trim()
删除多余的空白。