регулярное выражение для выделения слова в js

интернет программирование JavaScript регулярные выражения

есть текст. нужно составить регулярное выражение для выделения слова.
сейчас используется следующее:
var result = /\S+$/.exec(this.value.slice(0, this.value.indexOf(' ', caret.end))); где caret.end- позиция курсора.

как должно все работать:
есть предложение
"привет.я - мистер*шляпочник!и Я веселю(подкалываю) абсолютно всех!!!"
при установке курсора внутрь слова или на его границы, выражение должно возвращать слово.

например:
"мистер*шляпоч{кликаем сюда}ник!и" возвращается "шляпочник"
должно корректно работать при клике на последнее слово предложения(когда знаки препинания отсутствуют.
вот ссылка на пример того, что есть.
http://jsfiddle.net/W4BaW/

Примечание:
Герман Резниченко
у меня как раз будет ОООчень много текста + спецсимволы, которые в спан не обернешь.
тут только текстарея

Примечание:
Qui-Gon
спасибо, но ваше решение не справится со словом Müss
так-же с другими языками( например итальянским и тд)
Ответы:
Там в принципе есть и код. Я как то делал подобное. И без регулярки. Просто оборачивал все слова в span с единым классом и динамическим id. Далее по клику узнаем id и вытаскиваем слово которое внутри span. Реализация не сложная, но если большой текст то не желательно. А вообще по моему есть плагины jQuery
<textarea onclick="caretPos(this)">привет.я - мистер*шляпочник!и Я веселю(подкалываю) абсолютно всех!!!</textarea>
<script type="text/javascript">
function caretPos(el)
{
   var pos = 0;
   // IE Support
   if (document.selection)
   {
    el.focus ();
    var Sel = document.selection.createRange();
    var SelLength = document.selection.createRange().text.length;
    Sel.moveStart ('character', -el.value.length);
    pos = Sel.text.length - SelLength;
   }
   // Firefox support
   else if (el.selectionStart || el.selectionStart == '0')
    pos = el.selectionStart;
   
var str = el.value;
var re = /[а-яa-z]+/gi;
while ((match = re.exec(str)) != null) {
if (pos >= match.index && (pos <= match.index + match[0].length))
alert(match);
}
Весь сыр-бор из-за отвратительной реализации регулярок в JavaScript, который считает буквами только символы английского алфавита.
Можно задать диапазон в unicode, тогда найдется и Müss, и смузи, и фраппе.
var re = /(?!\d+)[\u00C0-\u1FFF\u2C00-\uD7FF\w]+/gi;


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.