Показать сообщение отдельно
  #9 (permalink)  
Старый 30.01.2022, 19:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от voraa
будут хвататься запятые
можно уточнить что именно является пробелом, /[^a-zа-яё*]/i
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            let textarea = document.querySelector(".txt");
            textarea.addEventListener("click", function() {
                let text = this.value,
                    start = this.selectionStart,
                    end = this.selectionEnd;
                if (/[a-zа-яё]/i.test(text[start]) && start == end) {
                    while (start) {
                        if (/[^a-zа-яё*]/i.test(text[start - 1])) break;
                        start--;
                    }
                    while (end < text.length) {
                        end++;
                        if (/[^a-zа-яё*]/i.test(text[end])) break;
                    }
                    this.setSelectionRange(start, end);
                    let selected = text.slice(start, end);
                    if (selected) {
                        selected = (/\*([a-zа-яё*]+)\*/i.test(selected)) ? selected.slice(1, -1) : `*${selected}*`;
                        this.setRangeText(selected, start, end, "end");
                    }
                }
            })
        });
    </script>
</head>
<body>
    <textarea name="txt" class="txt">hello word. red* </textarea>
</body>
</html>
Ответить с цитированием