Это должно работать для вас, но вы должны опубликовать свой код, чтобы мы могли увидеть, с чем мы работаем
// get paragraphs, and filter it to match only ones greater than 100 in length
$('p').filter(function(){
if ($(this).text().length > 100 && $(this).text().length < 150)
return true
else
return false
// get the `text` of the paragraph, and replace everything after a period after 100 words
}).text().replace(/(.{100,150})\..+$/,'$1')
регулярное выражение: ограничено /
, захватить ((...)
) любой символ (.
) от 100 до 150 раз ({100,150}
), затем (экранированный \
) .
, за которым следует любой символ .
один или несколько раз (+
), за которым следует конец ($
),Который захватывает первые символы вплоть до .
от 100 до 150 символов.
Редактировать: Если это полезно для вас ...
Это не совсем то же самоев качестве вопроса, но вместо этого возвращает строку, если она короче значения start
, или прерывает ее на .
между start
и limit
, или просто прерывает ее на limit
, где нет совпадения.
/**
* @returns string Text from inside matched element (or concatenated elements)
* but cute off after the start, and before the limit on any available `.`
* or returns short strings, or cuts off at limit where there is no match
*/
$.fn.cutNicely = function(start, limit){
var regex = new RegExp( "(.{" + start + "," + limit + "}\\.).+$" )
return this.text().substr(0,limit).replace(regex,'$1')
}
// usage:
$('p').cutNicely(80,150)