Как написать регулярное выражение для замены <br />
или <br>
на \n
. Я пытаюсь переместить текст из div в textarea, но не хочу, чтобы <br>
отображался в текстовом поле, поэтому я хочу заменить его на \n
.
JQuery javascript regex Заменить <br> с помощью\n
Ответ 1
var str = document.getElementById('mydiv').innerHTML;
document.getElementById('mytextarea').innerHTML = str.replace(/<br\s*[\/]?>/gi, "\n");
или с помощью jQuery:
var str = $("#mydiv").html();
var regex = /<br\s*[\/]?>/gi;
$("#mydiv").html(str.replace(regex, "\n"));
изменить: добавлен флаг i
edit2: вы можете использовать /<br[^>]*>/gi
, который будет соответствовать чему-либо между br
и slash
, если у вас есть, например, <br class="clear" />
Ответ 2
myString.replace(/<br ?\/?>/g, "\n")
Ответ 3
дешево и противно было бы:
jQuery("#myDiv").html().replace("<br>", "\n").replace("<br />", "\n")
Забастовкa > ИЗМЕНИТЬ
jQuery("#myTextArea").val(
jQuery("#myDiv").html()
.replace(/\<br\>/g, "\n")
.replace(/\<br \/\>/g, "\n")
);
Также при необходимости создается jsfiddle: http://jsfiddle.net/2D3xx/
Ответ 4
Истинный путь jQuery, если вы хотите напрямую изменить DOM без использования внутреннего HTML:
. $( '# текст') найти ( 'ш') PREPEND (document.createTextNode( '\ п')) удалить();..Забастовкa >
Подготовьте вставки внутри элемента, прежде чем() - это метод, который нам нужен здесь:
$('#text').find('br').before(document.createTextNode('\n')).remove();
Код найдет любую <br> элементы, вставить исходный текст с новым символом строки, а затем удалить <br> элементы.
Это должно быть быстрее, если вы работаете с длинными текстами, поскольку здесь нет строковых операций.
Чтобы отобразить новые строки:
$('#text').css('white-space', 'pre-line');
Ответ 5
Не похоже на jQuery, но если вы хотите обрезать шаблон из строки, используйте регулярное выражение:
<textarea id="ta0"></textarea>
<button onclick="
var ta = document.getElementById('ta0');
var text = 'some<br>text<br />to<br/>replace';
var re = /<br *\/?>/gi;
ta.value = text.replace(re, '\n');
">Add stuff to text area</button>