Хм.
Но ведь готовые autocomplete'ы правильно выделяют слова по регулярным выражениям.
Я не могу понять второго регулярного выражения, которое я нашёл в одном из таких контекстных поисков:
var re = new RegExp("(?![^&;]+;)(?!<[^<>]*)("+text+")(?![^<>]*>)(?![^&;]+;)",'gi');
На вскидку, там отсекаются теги и что