Показать сообщение отдельно
  #1 (permalink)  
Старый 24.03.2023, 12:01
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Регулярное выражение не понимает кириллицу. Как исправить?
Есть простой скрипт, исправляющий небольшие ошибки за пользователями. Если пользователь поставил после точки строчную букву скрипт делает её заглавной. Работает, но необходимо, чтобы скрипт не делал буквы заглавными после аббревиатур типа и т.д. и т.п. В регулярном выражении на кириллицу скрипт не реагирует, но работает на латинице и не поднимает букву после t.d. Помогите, пожалуйста, исправить. Код следует.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Test</title>
</head>
<body>

<script>
function replaceChars(entry) {

var obj = document.forms[0].elements[entry];
var str = obj.value;

var re = /(?<!t\.d)\. \S/g; // После точки слова начинаются с большой буквы если это не аббревиатуры
while(x = re.exec(str)) str = str.replace(x[0], x[0].toUpperCase());

obj.value = str;
}
</script>

<form>

<p>Text</p>
<textarea id="text" name="text" style="width:80%; height:400px;" required>Слова после точки начинаются с Заглавной буквы, если это не аббревиатуры типа и т.д. и т.п. как вы поняли и t.d. после которых ставить заглавную не надо. этот текст нужно исправить. и поставить заглавные буквы правильно.</textarea>
<p><a href="#" onclick="replaceChars('text'); return false;">Fix!</a></p>

</form>
</body>
</html>
Ответить с цитированием