регулярное выражение для проверки текста на формат даты не работает должным образом - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть функция, чтобы проверить часть моей 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 нет?

1 Ответ

2 голосов
/ 06 ноября 2019

Возможно, вы тестируете строку с пробелом в конце. Вы пытались проверить $(value).text().substring(0, 16) ?. На всякий случай это так просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...