как в строке в каждом слове сделать первую букву в верхний регистр ? Точнее как сделать это регуляркой ?
let str = 'исходная Строка дЛЯ теста';
let res = str.replace(/(?:^|\s)(\S)/ug, m => m.toUpperCase());
console.log(res);
(?:^|\s)
- начало строки или пробельный символ(\S)
- непробельный символ с захватом для заменыНасколько я знаю, в js regexp нет аналога \b
для unicode.
В некоторых случаях, эта регулярка не подойдёт(из-за отсутствия пробелов): а,б,в
Проще всего использовать класс \p{L}
:
let str = 'исходная Строка дЛЯ теста(раз,два,три)';
let res = str.replace(/(?:^|[^\p{L}])(\p{L})/ug, m => m.toUpperCase());
console.log(res);
Если среда поддерживает стандарт ECMAScript 2018, можно использовать (?<![\p{L}\p{N}_])
в качестве альтернативы границе слова \b
и \p{Ll}
для поиска любой буквы в нижнем регистре (\p{L}
найдет любые буквы, которые уже могут быть в верхнем регистре):
var rx = /(?<![\p{L}\p{N}_])\p{Ll}/gu;
var s = "наша новая,короткая строка.и тут ещё предложение.";
console.log(s.replace(rx, $0 => $0.toUpperCase()));
(?<![\p{L}\p{N}_])
- блок предварительного просмотра назад, находит место в строке, перед которым нет буквы, цифры или _
\p{Ll}
- буква в нижнем регистре.Если нет поддержки ECMAScript 2018, нужна либо библиотека XRegExp, либо выражение, содержащее диапазоны поддерживаемых букв:
var rx = /(?:^|[^а-яА-ЯёЁA-Za-z0-9_])[a-zа-яё]/gu;
var s = "наша новая,короткая строка.and another sentence.";
console.log(s.replace(rx, function($0) { return $0.toUpperCase(); }));
var xrx = XRegExp("(?:^|[^\\pL\\pN_])\\p{Ll}", "g");
console.log(XRegExp.replace(s, rx, function($0) { return $0.toUpperCase(); }));
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я делаю простую todo программу с помощью vuejs, при запуске программа выдаёт ошибку: Todo
Задача заключается в том, чтобы пробросить ID элемента в новый React компонент