Как с помощью регулярного выражения отделить символы с большой буквой, добавив пробел?

Как можно обработать текст, что если приходит

ЭтоОченьДлинныйТекстВообщеБезПробелов ИТутБылПробел

Как эту строку разделить по правилу, что б перед большой буквой поставился пробел, но только если спереди пробела не было и это не первый символ строки? Что б получить

Это Очень Длинный Текст Вообще Без Пробелов И Тут Был Пробел

Ответы (3 шт):

Автор решения: ΝNL993

Примерно вот так?

function solution(str) {
  return str.replace(/[А-ЯЁ]/g, (m, i) =>
    i === 0 || str[i - 1] === ' '
      ? m
      : ' ' + m
  )
}

function test(current, expected) {
  let changed = solution(current)
  console.log(changed, '\nPASSED?', changed === expected)
}

test(
  'ЭтоОченьДлинныйТекстВообщеБезПробелов ИТутБылПробел',
  'Это Очень Длинный Текст Вообще Без Пробелов И Тут Был Пробел'
)

test(
  'ИТутБылПробелЁМоё',
  'И Тут Был Пробел Ё Моё'
)

→ Ссылка
Автор решения: Miha

let str = 'ЭтоОченьДлинныйТекстВообщеБезПробелов ИТутБылПробел';
console.log(str.replace(/(?<!\s)[\А-\Я]/g, ' $&').trim());

→ Ссылка
Автор решения: Алексей Р

Где 2, там и 3

text = 'ЭтоОченьДлинныйТекстВообщеБезПробелов ИТутБылПробел';
console.log(text.replace(/(?<!^|\s)([А-ЯЁ])/g,' $1'))

→ Ссылка