Языковая политика
Общие обсуждения => Компьютеры и интернет => Topic started by: cetsalcoatle on 17 January 2026, 15:56:19
-
function normalizeText(text) {
return text
.toLowerCase()
.replace(/(^\s*[а-яa-z])|(\.\s*[а-яa-z])/g, match =>
match.toUpperCase()
);
}
/(^\s*[а-яa-z])|(\.\s*[а-яa-z])/g
Как это читать вообще? :what?
-
https://ru.wikipedia.org/wiki/Регулярные_выражения (https://ru.wikipedia.org/wiki/Регулярные_выражения)
"Найти строку, которая либо (() начинается (^) с пробела (\s) в любом количестве (*), затем содержит ([]) символ из диапазонов а-я и a-z, либо ()|() начинается с символа «.» (\.), затем содержит пробел (\s) в любом количестве (*), затем содержит ([]) символ из диапазонов а-я и a-z".
По мне, во-первых, избыточно, так как ищется одна и та же подстрока, только либо в начале строки, либо после точки, во-вторых, недостаточно, так как пропускается кириллическая ё (часто забывают, что она в таблице после я находится).
-
Проверил, оказывается, даже каретку можно в скобки заносить.
Так что правильная регулярка:
/(^|\.)\s*[a-zа-яё]/g
Буква "g" в конце означает global, поиск всех вхождений искомой подстроки в заданной строке text. С g callback в replace вызывается по массиву, без неё с первой найденной подстрокой.
Но, кстати, это выражение находит первые символы только после предложений, которые заканчиваются точкой. Если заканчивается на !, ?, … — регулярка не сработает.
-
Спасибо! :up:
-
А вторые лайки от кого? От автора функции normalizeText? :lol: