web-dev-qa-db-ja.com

jQuery javascript regex <br>を\ nに置き換えます

<br />または<br>\nに置き換える正規表現を記述する方法テキストをdivからtextareaに移動しようとしていますが、<br>をtextareaに表示したくないので、\nに置き換えます。

60
Pinkie
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"));

edit:iフラグを追加

edit2:brslashの間のすべてに一致する/<br[^>]*>/giを使用できます。たとえば、 <br class="clear" />

163
Teneff

myString.replace(/<br ?\/?>/g, "\n")

9
Adam Bergmark

内部HTMLをいじらずにDOMを直接変更する場合の真のjQuery方法:

$( '#text')。find( 'br')。prepend(document.createTextNode( '\ n'))。remove();

要素内に挿入を追加します。before()はここで必要なメソッドです。

$('#text').find('br').before(document.createTextNode('\n')).remove();

コードはすべての<br>要素を見つけ、改行文字を含む生のテキストを挿入してから、<br>要素を削除します。

ここには文字列操作がないため、長いテキストを使用する場合は、これが高速になります。

新しい行を表示するには:

$('#text').css('white-space', 'pre-line');
5
Radek Pech

安くて厄介なものは:

jQuery("#myDiv").html().replace("<br>", "\n").replace("<br />", "\n")

[〜#〜] edit [〜#〜]

jQuery("#myTextArea").val(
    jQuery("#myDiv").html()
        .replace(/\<br\>/g, "\n")
        .replace(/\<br \/\>/g, "\n")
);

必要に応じてjsfiddleも作成しました: http://jsfiddle.net/2D3xx/

3
James Khoury

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>
2
RobG