Как получить все даты и время из строки, используя JavaScript / Jquery? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь получить все поля DateTime, используя JS / Jquery.

В настоящее время я пытаюсь сделать это с помощью Regex, но безуспешно.

INPUT:

12345 User Name 9/10/2018 11:39:37 AM Valid Entry Place1 
12345 User Name 9/10/2018 12:48:43 PM Valid Exit Outside Place1 
12345 User Name 9/10/2018 1:00:44 PM Valid Entry Place1 
12345 User Name 9/10/2018 2:17:01 PM Valid Exit Outside Place1 
12345 User Name 9/10/2018 3:23:36 PM Valid Entry Place1 
12345 User Name 9/10/2018 3:25:56 PM Valid Entry Place1 
12345 User Name 9/10/2018 6:06:25 PM Valid Exit Outside Place1 
12345 User Name 9/10/2018 6:07:55 PM Valid Entry LC 
12345 User Name 9/10/2018 6:28:19 PM Valid Exit Outside LC 
12345 User Name 9/10/2018 6:30:06 PM Valid Entry Place1

ОЖИДАЕМЫЙ ВЫХОД:

9/10/2018 11:39:37 AM
9/10/2018 12:48:43 PM
9/10/2018 1:00:44 PM
9/10/2018 2:17:01 PM
9/10/2018 3:23:36 PM
9/10/2018 3:25:56 PM
9/10/2018 6:06:25 PM
9/10/2018 6:07:55 PM
9/10/2018 6:28:19 PM
9/10/2018 6:30:06 PM

ТЕКУЩАЯ ЛОГИКА:

function myFunction() {
    var str = document.getElementById("demo").innerHTML; 
    var txtIdAndName = str.replace(/[0-9]*\s[a-z,\s*]*/ig,"");
    var txtStatusAndPlace = txtIdAndName.replace(/[AM,PM]+\s[a-z,\s*]*/ig,"<br/>");
    document.getElementById("demo").innerHTML = txtStatusAndPlace;
}

Пожалуйста, дайте мне знатьесли потребуется дополнительная информация с моей стороны.

Может использовать любую логику или метод для достижения цели.

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Попробуйте это регулярное выражение,

\d+\/\d+\/\d+\s*\d+:\d+:\d+\s*[AP]M

Демо

0 голосов
/ 11 сентября 2018

Другие пользователи опубликовали ответ за использование регулярных выражений.Но вы можете использовать другой способ вместо регулярного выражения, если структура вашей строки постоянна.

Использование javascript .split() для разбиения строки и .splice() для выбора специальной части результата.

var str = document.getElementById("demo").innerHTML;
var newStr = str.trim().split("\n").map(function(text){
    return text.split(" ").splice(3, 3).join(" ");
}).join("\n");
console.log(newStr); 
<div id="demo">
12345 User Name 9/10/2018 11:39:37 AM Valid Entry Place1 
12345 User Name 9/10/2018 12:48:43 PM Valid Exit Outside Place1 
12345 User Name 9/10/2018 1:00:44 PM Valid Entry Place1 
12345 User Name 9/10/2018 2:17:01 PM Valid Exit Outside Place1 
12345 User Name 9/10/2018 3:23:36 PM Valid Entry Place1 
12345 User Name 9/10/2018 3:25:56 PM Valid Entry Place1 
12345 User Name 9/10/2018 6:06:25 PM Valid Exit Outside Place1 
12345 User Name 9/10/2018 6:07:55 PM Valid Entry LC 
12345 User Name 9/10/2018 6:28:19 PM Valid Exit Outside LC 
12345 User Name 9/10/2018 6:30:06 PM Valid Entry Place1
</div>
0 голосов
/ 11 сентября 2018

Вы можете сопоставить эти подстроки с

s.match(/\b\d{1,2}\/\d{1,2}\/\d{4}\s+\d{1,2}:\d{2}:\d{2}\s*[AP]M\b/g)

См. Демоверсию regex

Детали

  • \b - граница слова
  • \d{1,2} - 1 или 2 цифры,
  • \/ - косая черта (экранированная, поскольку литеральная запись регулярного выражения используется с / в качестве разделителей)
  • \d{1,2}\/\d{4} - 1 или 2 цифры, /, а затем 4 цифры
  • \s+ - 1+ пробелов
  • \d{1,2}:\d{2}:\d{2} - (шаблон времени) 1 или 2 цифры, :, 2 цифры, : и еще 2 цифры
  • \s* - 0+ пробелов
  • [AP] - A или P
  • M - M char
  • \b - граница слова.

JS демо:

var s = "12345 User Name 9/10/2018 11:39:37 AM Valid Entry Place1 \n12345 User Name 9/10/2018 12:48:43 PM Valid Exit Outside Place1 \n12345 User Name 9/10/2018 1:00:44 PM Valid Entry Place1 \n12345 User Name 9/10/2018 2:17:01 PM Valid Exit Outside Place1 \n12345 User Name 9/10/2018 3:23:36 PM Valid Entry Place1 \n12345 User Name 9/10/2018 3:25:56 PM Valid Entry Place1 \n12345 User Name 9/10/2018 6:06:25 PM Valid Exit Outside Place1 \n12345 User Name 9/10/2018 6:07:55 PM Valid Entry LC \n12345 User Name 9/10/2018 6:28:19 PM Valid Exit Outside LC \n12345 User Name 9/10/2018 6:30:06 PM Valid Entry Place1";
var rx = /\b\d{1,2}\/\d{1,2}\/\d{4}\s+\d{1,2}:\d{2}:\d{2}\s*[AP]M\b/g;
document.body.innerHTML = "" + s.match(rx).join("
") + "
";
...