Как заменить все разрывы строк в строке тегами <br/">?

Как я могу прочитать разрыв строки из значения с помощью 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."

Ответ 1

Это превратит все результаты в HTML

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

Если вам интересно, что?: означает. Это называется группа без захвата. Это означает, что группа регулярных выражений в скобках не будет сохранена в памяти для последующего обращения к ней. Вы можете проверить эти темы для получения дополнительной информации:
fooobar.com/questions/82790/... fooobar.com/questions/456386/...

Ответ 2

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

HTML

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

CSS

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

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

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

Ответ 3

Без регулярного выражения:

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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

Ответ 7

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

function insertTextWithLineBreaks(text, targetElement) {
    var textWithNormalizedLineBreaks = text.replace('\r\n', '\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'));
        }
    }
}

Ответ 8

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

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

Ответ 9

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

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

Первая строка: найдите \n ИЛИ \r\n, где по меньшей мере 2 из них находятся в строке, например. \n\n\n\n. Затем замените его на 2 br

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

Ответ 10

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

$string=nl2br($string);

Ответ 11

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

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

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

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

Узнайте больше о Regex: https://dl.icewarp.com/online_help/203030104.htm это поможет вам каждый раз.

Ответ 12

Не отвечая на конкретный вопрос, но я уверен, что это кому-то поможет...

Если у вас есть вывод из PHP, который вы хотите отобразить на веб-странице с использованием JavaScript (возможно, в результате запроса Ajax), и вы просто хотите сохранить пробелы и разрывы строк, попробуйте заключить текст в <pre></pre> блок:

var text_with_line_breaks = retrieve_some_text_from_php();
var element = document.querySelectorAll('#output');
element.innerHTML = '<pre>' + text_with_line_breaks + '</pre>';

Ответ 13

Пытаться

let s='This is man.

     Man like dog.
     Man like to drink.

     Man is the king.';
     
msg.innerHTML = s.replace(/\n/g,"<br />");
<div id="msg"></div>