jQuery的JavaScript正则expression式replace\ n

我如何编写一个正则expression式来replace<br />或者\n 。 我试图将文本从div移动到textarea,但不希望在textarea中显示<br> ,所以我想用\nreplace。

 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来匹配brslash之间的任何东西,例如<br class="clear" />

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

一个便宜和讨厌的将是:

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

编辑

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

如果需要也创build一个jsfiddle: http : //jsfiddle.net/2D3xx/

真正的jQuery方式,如果你想直接改变DOM而不搞乱内部的HTML:

$( '#文字')find( 'BR')预定(document.createTextNode( '\ n'))删除()。;

在元素前面插入插入,before()是我们需要的方法:

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

代码将find任何<br>元素,用新行字符插入原始文本,然后删除<br>元素。

如果使用长文本,这应该会更快,因为这里没有string操作。

要显示新行:

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

与jQuery没什么关系,但是如果你想从一个string中修剪一个模式,那么使用一个正则expression式:

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