RegEx для извлечения даты из времени

У меня есть следующие дата и время, и я хочу преобразовать их в простую цифру, используя RegEx

Что у меня есть: 2017-11-02T04:00:00Z

Что я хочу преобразовать в: 20171102 (включая ведущие нули месяцев / дат)

Это возможно с RegEx? Был в состоянии получить "2017-" только после нескольких часов работы, используя "^(.*?)-"

Кажется все сложнее, любая рука помощи очень ценится

Изменить: показывая, где я пытаюсь это. Я пытаюсь сделать это на Nintex для SharePoint. Но до этого я использую www.regEx101.com для проверки

введите описание изображения здесь

введите описание изображения здесь

3 ответа

Решение

Используйте следующее регулярное выражение с шаблоном замены:

^(\d{4})-(\d{2})-(\d{2}).*

и предоставить

$1$2$3

в качестве шаблона замены.

подробности

  • ^ - начало строки
  • (\d{4}) - Группа 1 (позже упоминается как $1 обратная ссылка из шаблона замены): четыре цифры
  • - - дефис
  • (\d{2}) - Группа 1 (позже упоминается как $2 обратная ссылка из шаблона замены): две цифры
  • - - дефис
  • (\d{2}) - Группа 3 (позже упоминается как $3 обратная ссылка из шаблона замены): две цифры
  • .* - остальная часть строки.

Смотрите демо-версию регулярного выражения.

Как насчет ^\d{4}-\d{2}-\d{2}?

Это будет соответствовать ровно четырем цифрам, за которыми следует дефис, за которыми следуют 2 цифры, за которыми следует еще один дефис, за которым следуют еще две цифры.

var str = "2017-11-02T04:00:00Z";
var res = str.match(/^\d{4}-\d{2}-\d{2}/)[0];
console.log(res);

Невозможно исключить символы из группы совпадений в регулярном выражении, поэтому вы должны использовать три группы совпадений. Я использую командную строку sed, чтобы экспериментировать с регулярными выражениями. Вот некоторые результаты, чтобы показать, что я имею в виду:

$ echo '2017-11-02T04:00:00Z'|sed 's/^\([0-9]*\)-\([0-9]*\)-\([0-9]*\)T.*$/\1\2\3/'
20171102

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

Другие вопросы по тегам