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