среда, 28 марта 2012 г.

Форматирование даты в JavaScript с помощью regex



Столкнулся с задачей в JavaScript вывода даты/времени с добавлением "0" (аналог функций lpad в mySql или Oracle), если значение меньше 10. В интернете данная задача решается с помощью создания функции, например, такой:

function pad(num, size) {
    var s = num+"";
    while (s.length < size) s = "0" + s;
    return s;
}
или такие:
function pad(num, size) {
    var s = "000000000" + num;
    return s.substr(s.length-size);
}

function zeroPad(num, places) {
  var zero = places - num.toString().length + 1;
  return Array(+(zero > 0 && zero)).join("0") + num;
}
но ни одного варианта с использованием регулярных выражений.
А это же элементарно.
/\d/ - ищет все цифры
/\d{1}/ - ищет только одну цифру
/\b\d{1}\b/ - ищет только одну цифру, до и после которой нет других цифр.
Поэтому, чтобы вывести, например, дату/время в формате 'hh:mi:ss dd/mm/yyyy', можно воспользоваться такой строчкой:
([h,mi,ss].join(":")+' '+[d,m,y].join("/")).replace(/(\b\d{1}\b)/g,"0$1");
или функцией:
function mktime(h,mi,ss,d,m,y){
 return ([h,mi,ss].join(":")+'/'+[d,m,y].join(".")).replace(/(\b\d{1}\b)/g,"0$1");
}
Регулярные выражения - очень удобная вещь!

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

Отправить комментарий