Как разбить строку в верхнем и нижнем регистре в JavaScript?

Можно ли разделить строки в JavaScript на случай, чтобы следующая строка ниже (myString) была преобразована в массив (myArray) ниже:

var myString = "HOWtoDOthis";
var myArray = ["HOW", "to", "DO", "this"];

Я пробовал регулярное выражение ниже, но он только разбивается на camelCase:

.match(/[A-Z]*[^A-Z]+/g);

Ответ 1

([A-Z]+|[a-z]+). Совместите все верхние регистры или все нижние регистры несколько раз в группе захвата. Попробуйте здесь: https://regex101.com/r/bC8gO3/1

Ответ 2

Другой способ сделать это - добавить маркер, а затем разделить с помощью этого маркера, в данном случае двойного восклицательного знака:

Пример JsBin

var s = "HOWtoDOthis";

var t = s.replace(/((?:[A-Z]+)|([^A-Z]+))/g, '!!$&').split('!!');