0

Нужно написать регулярное выражение, которое будет вычленять все слова, которые написаны «капсом» и переводить их в то же слово, написанное с заглавной буквы, а все остальные слова делать строчными.

Регулярка нужна для JavaScript, если это важно.

Выделить нужно слово — с этим нет проблем, а как сделать замену — ума не приложу.

Так не выходит:

''.replace(//, '$1' + '$2'.toLocaleLowerCase())
VenZell
  • 19,872
higimo
  • 388
  • 1
    @higimo, Согласно правилам форума, вопросы не должны сводиться к решению либо завершению учебных заданий за учащихся. Пожалуйста, уточните, что вы сделали сами и что не получилось. – Nicolas Chabanovsky May 10 '14 at 07:44
  • 1
    http://regex101.com/r/oA4uD7 – MDJHD May 10 '14 at 08:57

1 Answers1

3

http://javascript.ru/string/replace

В большинстве языков программирования для регулярных выражений есть возможность callback-замен.
Вместо строки замены в replace передается функция, которая создает строку замены.

var text = "THIS is CAPS и РУССКИЙ КАПС";
var re = /([А-ЯЁA-Z])([А-ЯЁA-Z]+)/ig;
var repl = function ( full, group1, group2 ) {
    return group1 + group2.toLowerCase();
};
var result = text.replace( re, repl );
document.body.innerHTML = result;

Для шаблона символов различных языков (если требуются отличные от ru и en) используйте вопрос:
Как описать все символы некоторого языка в регулярном выражении? Есть ли готовые решения?

ReinRaus
  • 17,873
  • 3
  • 47
  • 86