Вопрос по JS не могу разобраться в коде

  • 5 Ответов
  • 427 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

/dev/null

  • Осваиваюсь на форуме
  • ***
  • 33
  • 0
  • /dev/null
Всем доброго времени суток!
Возникла проблема, в шаблоне присутствует JS который берет первый символ последнего введенного слова и подкрашивает определенным цветом. Но вся беда в том, что скрипт реагирует только на спец символы ($&>?) и английские символы (abcd), а нужно чтобы он цеплял и русские буквы тоже.

Код:

Код
$(".ja-healineswrap em, .t3-bottomslider .module-title span").html(function(index, old) {
return old.replace(/(\b\w+)$/, '<span class="last-word">$1</span>');
});

Вот регулярное выражение. Оно появляется если в конце присутствует английский символ. К коду добавляется вот этот span <span class="last-word">$1</span>

Заранее спасибо.
Freedom forever

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
Код: javascript
var txt ='Привет дорогой друг';
console.log(txt.replace(/([^\s]+)$/, '<span class="last-word">var txt ='Привет дорогой друг';
console.log(txt.replace(/([^\s]+)$/, '<span class="last-word">$1</span>'));
</span>'));
вариант

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
Код
return old.replace(/(.*\s)(.*)$/, '$1<span class="last-word">$2</span>')

Код: javascript
var txt ='Привет дорогой друг';
console.log(txt.replace(/([^\s]+)$/, '<span class="last-word">var txt ='Привет дорогой друг';
console.log(txt.replace(/([^\s]+)$/, '<span class="last-word">$1</span>'));
</span>'));
вариант
если будет 1 слово он тоже обернет его в span

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
если будет 1 слово он тоже обернет его в span
именно так, как и приведенный автором вариант
вариант с исключением первого слова
Код: javascript
var txt ='Привет дорогой друг';
console.log(txt.replace(/(\s)([^\s]+)$/, 'var txt ='Привет дорогой друг';
console.log(txt.replace(/(\s)([^\s]+)$/, '$1<span class="last-word">$2</span>'));
console.log(txt.replace(/ ([^\s]+)$/, ' <span class="last-word">$1</span>'));
<span class="last-word">javascript</span>'));
console.log(txt.replace(/ ([^\s]+)$/, ' <span class="last-word">var txt ='Привет дорогой друг';
console.log(txt.replace(/(\s)([^\s]+)$/, '$1<span class="last-word">$2</span>'));
console.log(txt.replace(/ ([^\s]+)$/, ' <span class="last-word">$1</span>'));
</span>'));

*

/dev/null

  • Осваиваюсь на форуме
  • ***
  • 33
  • 0
  • /dev/null
Ок, спасибо. Вечером попробую, отпишусь по результатам))
Freedom forever

*

Genetic_Bros

  • Новичок
  • *
  • 1
  • 0
именно так, как и приведенный автором вариант
вариант с исключением первого слова
Код: javascript
var txt ='Привет дорогой друг';
console.log(txt.replace(/(\s)([^\s]+)$/, 'var txt ='Привет дорогой друг';
console.log(txt.replace(/(\s)([^\s]+)$/, '$1<span class="last-word">$2</span>'));
console.log(txt.replace(/ ([^\s]+)$/, ' <span class="last-word">$1</span>'));
<span class="last-word">javascript</span>'));
console.log(txt.replace(/ ([^\s]+)$/, ' <span class="last-word">var txt ='Привет дорогой друг';
console.log(txt.replace(/(\s)([^\s]+)$/, '$1<span class="last-word">$2</span>'));
console.log(txt.replace(/ ([^\s]+)$/, ' <span class="last-word">$1</span>'));
</span>'));

Добавили, всё заработало как на часах, спасибо :D