Как выводить строку только в определенном формате?

Добрый день . Такая проблема , через pug выводится массив объектов на страницу. Меняться он в основном не будет ,кроме пары значений. Хотел бы узнать можно ли выводить эти значения строго в определенном формате ? Н-р: если ввели диапазон времени так "1600 1800" или даже так "16001800" ,то на странице автоматически вывелось в формате "16:00 - 18:00"?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
  • \d – одна цифра
  • (\d) – одна цифра, и мы её запомнили, чтобы потом вывести через $1, $2, ... $8
  • \s – один пробельный символ
  • \s? – один пробельный символ, но если его нет - тоже ок
  • \- – один символ дефиса (тоже надо экранировать)
  • \-? – один символ дефиса, если его нет, то и ладно.


Допуская одиночные пробелы в любом месте где-то между:
var re = /(\d)\s?(\d)\s?(\d)\s?(\d)\s?\-?\s?(\d)\s?(\d)\s?(\d)\s?(\d)/;

var tests = [
  '1600 1800', // 16:00 - 18:00
  '16001800', // 16:00 - 18:00
  'abc def 16001800 geh', // abc def 16:00 - 18:00 geh
  'zzzz16001800zzz' // zzzz16:00 - 18:00zzz
];
tests.map(e => e.replace(re, '$1$2:$3$4 - $5$6:$7$8'))


Подводные камни:
  1. про двоеточия в исходном тексте не говорили
  2. заменит любую последовательность из 8 цифр, в т.ч. из номера телефона +7 495 5554321 сделает +74:95 - 55:54321
  3. минус "-" это не короткое "–" или длинное "—" тире, если в исходном тексте будут тире, не заметит.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы