Как с помощью регулярных выражений разделить строку на слова?
У меня есть подобные строки OneWord. Мне нужно разделить их на One и Word соответственно. Как это сделать с помощью регулярных выражений? Я написал такое
let str = "OneWord";
let parts = str.split(new RegExp("[A-Z]"))
Но оно выдает мне строки без больших букв. Помогите составить правильное регулярное выражение.
Ответы (1 шт):
Вы можете использовать
let str = "OneWord";
console.log( str.split(/(?!^)(?=[A-Z])/) )
console.log( str.match(/[A-Z][^A-Z]*/g) )
В первом случае используется метод String#split с регулярным выражением (?!^)(?=[A-Z]), которое находит позиции в строке перед заглавной буквой ((?=[A-Z])) (но не в начале строки ((?!^))).
Во втором случае используется метод String#match с регулярным выражением [^A-Z]*, которое находит заглавную букву ([A-Z]) и все ноль и более последующие символы за ней, отличные от заглавной буквы ([^A-Z]*)).
Если нужна поддержка любых букв:
let str = "ОдноСлово";
console.log( str.split(/(?!^)(?=\p{Lu})/u) )
console.log( str.match(/\p{Lu}\P{Lu}*/gu) )