我怎样写一个正则表达式来替换<br />
或<br>
与\n
。我正在尝试将文本从div移动到textarea,但是不想<br>
在textarea中显示,因此我想用替换\n
。
Answers:
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" />
<BR>
字母我们如何做到这一点,以便它可以同时使用大小写字母。
i
标志
myString.replace(/<br ?\/?>/g, "\n")
br
和斜线
*
如果您想直接更改DOM而又不弄乱内部HTML,则为真正的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');
便宜又讨厌的是:
jQuery("#myDiv").html().replace("<br>", "\n").replace("<br />", "\n")
编辑
jQuery("#myTextArea").val(
jQuery("#myDiv").html()
.replace(/\<br\>/g, "\n")
.replace(/\<br \/\>/g, "\n")
);
如果需要,还创建了一个jsfiddle:http : //jsfiddle.net/2D3xx/
与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>
</br>
是一个直接的错误。严格来说,它会关闭前面的所有开始标记,但是浏览器似乎很容忍并将其转换为<br>
。另外,OP也没有要求。
nl2br()
是您需要的功能