leni_m
@leni_m
ЧупаКобрус

Что делает регулярное выражение?

Извиняюсь, не разбираюсь в регулярках.
Есть такой код:
$(this).text(function(index, text) {
   return text.replace(/\W*\s(\S)*$/, '...');
});

и на сайте получается text в 2 строки, а что не влезает ставится "..."
А задача состоит в том, что надо сделать не 2 строки, а 3.
Правильно ли я понимаю. что надо изменить регулярку для данной задачи?
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Сложно сказать словами, что делает.
Видимо, ищет символы, не являющиеся пробелами (включая \n) в конце строки и заменяет их на "..."
Причем, перед ними должен быть один пробел (или символ \n) и любое количество специальных символов.
Как-то так, хотя это не точное объяснение.
Вообще довольно странный regex, не для всех текстов подходит, а только для очень специфических. Может, что-то другое считает две строки? Не этот код?

Вот сайтик для развлечения: https://regex101.com/
Там можно вбить свою регулярку, посмотреть "на словах", что она делает, а также поэкспериментировать с изменяемым текстом.
Там даже шпаргалка по регуляркам есть, так что можно уже самому начать понимать, что за магия происходит.

Для трех строк я бы сделал что-то в этом роде:
$(this).text(function(index, text) {
   return text.replace(/^.*[\r\n].*[\r\n].*([\r\n][\s\S]*)$/, '...');
});

Но это совсем не похоже на то, что в вопросе. Прямолинейный тупой подсчёт строк и замена всего, что длиннее, на многоточие.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы