Как прочитать разрыв строки из значения с помощью Javascript и заменить все разрывы строк на br Тролль, хакер!

Пример:

Переменная, переданная из PHP как показано ниже:

  "This is man.

     Man like dog.
     Man like to drink.

     Man is the king."

Я бы хотел, чтобы мой результат выглядел примерно так после того, как Javascript преобразует его:

  "This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."

Это превратит все возвращаемые значения в HTML

str = str.replace(/(?:rn|r|n)/g, '<br>');

В случае, если вам интересно, что?: означает. Это называется не группа захвата. Это означает, что группа регулярных выражений в скобках не будет сохранена в памяти для последующего обращения к ней. Вы можете проверить эти потоки для получения дополнительной информации:
https://stackoverflow.com/a/11530881/5042169 https://stackoverflow.com/a/36524555/5042169

Если ваша задача — отображать разрывы строк, вы можете сделать это с помощью CSS.

является экземпляром

<div class="white-space-pre">Some test
with linebreaks</div>

https://developers.google.com/web/updates/2018/03/clipboardapi

.white-space-pre {
    white-space: pre-wrap;
}

jsfiddle https://jsfiddle.net/yk1angkz/125/

Примечание : обратите внимание на форматирование кода и отступ, поскольку white-space: pre-wrap будет отображать все пробелы (кроме последней новой строки после текста, см. Fiddle).

без регулярных выражений:

str = str.split("n").join("<br />");

Это работает для ввода, поступающего из текстовой области

str.replace(new RegExp('r?n','g'), '<br />');

Если принятый ответ не подходит вам, вы можете попробовать.

str.replace(new RegExp('n','g'), '<br />')

Это сработало для меня.

Независимо от системы:

my_multiline_text.replace(/$/mg,'<br>');

Также важно закодировать остальную часть текста, чтобы защитить от возможных атак внедрения скриптов

function insertTextWithLineBreaks(text, targetElement) {
    var textWithNormalizedLineBreaks = text.replace('rn', 'n');
    var textParts = textWithNormalizedLineBreaks.split('n');

    for (var i = 0; i < textParts.length; i  ) {
        targetElement.appendChild(document.createTextNode(textParts[i]));
        if (i < textParts.length - 1) {
            targetElement.appendChild(document.createElement('br'));
        }
    }
}

Это сработало для меня, когда значение пришло из TextBox:

string.replace(/n|rn|r/g, '<br/>');

Для тех, из вас, кто просто хочет, чтобы макс. 2 <br> подряд, вы можете использовать это:

let text = text.replace(/(r?n){2,}/g, '<br><br>');
text = text.replace(/(r?n)/g, '<br>');

Первая строка: найдите n или rn, где как минимум 2 из них находятся в строке, например, nnnn. Затем замените его на 2 br

Вторая строка: найдите все одиночные rn или n и замените их на <br>

, если вы отправите переменную из PHP, вы можете получить ее перед отправкой:

$string=nl2br($string);

Она заменит все новые строка с разрывом

str = str.replace(/n/g, '<br>')

Если вы хотите заменить всю новую строку на строку с одним разрывом

str = str.replace(/n*n/g, '<br>')

Подробнее о Regex: https://dl.icewarp.com/online_help/203030104.htm Это реальный пример из проекта, который я разрабатываю. Спасибо этому