Задать вопрос
@arturka_v_10

Как подставлять «-» через каждые 4 символа?

Мне нужно строку [a-zA-Z0-9], например ABCDEF2GA3BCABCD преобразовать в ABCD-EF2G-A3BC-ABCD.

Накошмарив регулярку, я смог получить лишь то, чтобы первые 4 отделялись дефисом, а дальше каждый символ отделялся.
Мне же нужно чтобы строка дробилась дефисом каждые 4 символа, с допуском по [a-zA-Z0-9].
  • Вопрос задан
  • 274 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Делаем просто, ровно то, что спрошено:

str.replace(/.{4}(?!$)/g, '$&-')

Делаем сложно:

chunked(str, 4).join('-')

Спросите, в чём тут сложность? В том, что функцию нарезания на куски массивоподобных объектов нам придётся изготовить самостоятельно:

const chunked = (data, chunkSize, slice = data.slice) =>
  Array.from(
    { length: Math.ceil(data.length / chunkSize) },
    function(_, i) {
      return this(i * chunkSize, (i + 1) * chunkSize);
    },
    (slice instanceof Function ? slice : Array.prototype.slice).bind(data)
  );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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