2016-05-10 2 views
10

Можно ли разделить строк в JavaScript на случай такой, что следующая строка ниже (MyString) будет преобразован в массив (MyArray) ниже:Как разбить строку в верхнем и нижнем регистре в JavaScript?

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

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

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

Кажется чтобы быть дубликатом http://stackoverflow.com/a/7599674/586030 –

+2

Попробуйте: '/ (?: [AZ] + | [^ AZ] +)/g' https://regex101.com/r/hR3kE3/1 –

+0

, который отлично работал, косоглазие - однако, я не могу задать Q, как ответил, когда вы отправили комментарий. – Haloor

ответ

8

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

3

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

JsBin Example

var s = "HOWtoDOthis"; 

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

Зачем использовать маркер? –

Смежные вопросы