Как извлечь формат времени из строки с помощью регулярных выражений - PullRequest
1 голос
/ 09 июля 2019

Я хочу извлечь время из этой строки "Last Updated on Jul 9 2019, 3:15 pm +08"

<div id="demo"></div>
<script>
var str = "Last Updated on Jul 9 2019, 3:15 pm +08";

  var result = str.match(???);
    if(result) {
       document.getElementById("demo").innerHTML = result;
    }
</script>

или возможно извлечь дату и время, но в виде массива, например ['Jul 9 2019','3:15pm']

Я новичок в использовании регулярного выражения и не имеюИдея, как сформулировать шаблон.Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 09 июля 2019

Вы можете использовать положительный вид сзади, чтобы найти 'on' в строке, захватить все до pm / am и разделить запятую и пробел, предполагая, что формат соответствует:

const str = "Last Updated on Jul 9 2019, 3:15 pm +08"
console.log(str.match(/(?<=on ).*(p|a)m/)[0].split(', '))

Обратите внимание, что функция положительного просмотра не совместима со всеми браузерами, поэтому я бы рекомендовал использовать подход adiga , если проблема совместимости.

1 голос
/ 09 июля 2019

Вы можете использовать регулярное выражение /on ([^,]+),\s*(.*(?:am|pm))/ с одним захватом для даты и другим для времени

var str = "Last Updated on Jul 9 2019, 3:15 pm +08";
var result = str.match(/on ([^,]+),\s*(.*(?:am|pm))/);
result.shift();

console.log(result)

Regex demo

0 голосов
/ 09 июля 2019

если вы используете регулярное выражение, вы можете использовать '\ d {1,2}: \ d {2} (am | pm)', чтобы найти время в строке даты. С \ d {1,2} вы получаете цифру от 1 до 60, с (am | pm) вы находите строку 'am' ИЛИ ​​строку 'pm'.

0 голосов
/ 09 июля 2019

Это можно сделать без использования регулярных выражений (при условии, что формат времени остается таким же, как в приведенном вами примере). Как это:

var str = "Last Updated on Jul 9 2019, 3:15 pm +08";
var onlyTime = []
onlyTime.push(str.split(' ').slice(3,6).join(' ').slice(0, -1));
onlyTime.push(str.split(' ').slice(6,8).join(''));
console.log(onlyTime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...