Практические задачи. Поиск и обработка даты с помощью регулярных выражений на JavaScript

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

Описание задачи:
Дана html-таблица, в одной из колонок которой содержится дата в формате (d)d.(M)M.YYYY (H)H:(m)m. Нужно вместо полного формата даты и времени показывать только время.

<table border=1>
  <tr>
     <td>1</td>
	 <td>1.12.2016 10:00</td>
	 <td>Тест 1</td>
  </tr>
  <tr>
     <td>2</td>
	 <td>10.6.2016 3:00</td>
	 <td>Тест 4</td>
  </tr>
  <tr>
     <td>3</td>
	 <td>10.12.2016 4:00</td>
	 <td>Тест 3</td>
  </tr>
  <tr>
     <td>4</td>
	 <td>10.3.2016 16:00</td>
	 <td>Тест 2</td>
  </tr>
</table>

Как видно, составные части даты и времени могут содержать как 1 цифру значения, так и 2.

 

Решение:
С помощью jQuery перебираем все td-шки и ищем текст, соответствующий формату, с помощью регулярных выражений. Регулярное выражение ищет вхождение двух групп (даты и времени), после чего меняет содержимое тэга td на только группу времени.

 

Реализация:

$(document).ready(function() {
	//Проходим по всем td-шкам
	$('td').each(function(i) {
		var str = $(this).text();
		//patt - паттерн для регулярного выражения. По хорошему, надо вынести за пределы перебора, но для читабельности оставлю здесь
		var patt = /(\d{1,2}\.\d{1,2}\.\d{1,4})\s(\d{1,2}:\d{1,2})/i
		//re - собственно экземпляр регулярного выражения
		var re = new RegExp(patt);
		//match - совпадения
		match = str.match(re);
		if(str.match(re)) {
			//Если найдены дата и время в формате (d)d.(M)M.YYYY (H)H:(m)m, то выводим только время
			console.log('Время события: ' + match[2])
			$(this).text(match[2]);
		}
		else {
			console.log('Это не время');			
		}
	});
});

 


Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment






MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика