Я не уверен, что лучше всего делать это на стороне клиента. Я хотел бы рассмотреть отправку абзацев обратно на сервер, чтобы сделать работу. Но работа должна быть одинаковой в любом случае.
Сначала возьмите все содержимое абзаца, убедитесь, что все это может быть в нескольких узлах в DOM. ( Read This ) Затем вам нужно будет создать парсер, который будет искать ваши разделенные символы, игнорируя их, пока они находятся в HTML-сущностях.
В качестве примера. в атрибуте href следует игнорировать и не разбивать. Выполняя разбор, вы можете сохранять количество слов и нарушать работу с пробелами. Сделайте каждое предложение объектом, который содержит все предложение и количество слов. Таким образом, вы можете поместить эти объекты в массив, представляющий абзац. После этого вы можете выполнить итерацию по массиву и обернуть любое предложение в промежуток для выделения с помощью CSS, если количество слов достигает вашего порога.
Основная проблема - это теги, которые могут быть частью двух предложений, таких как следующее.
I'm typing <b> in bold. NOW!</b>
то, о чем я говорил, с этим не справляется, но вы могли бы позже сделать синтаксический анализатор более сложным, чтобы это поддерживать.
Итак, краткий обзор моего бессвязного анализа всех символов с помощью конечного автомата, который занимается подсчетом слов и расщеплением в правильном месте. При разделении добавьте собранные данные в массив. Когда закончите, переберите массив, выводя вновь обернутые предложения.