我该如何编写正则表达式以替换<br />
或<br>
为\n
。 我想从
移动文本到
我该如何编写正则表达式以替换<br />
或<br>
为\n
。 我想从
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标志
编辑2:如果您有例如<br class="clear" />
的内容,您可以使用/<br[^>]*>/gi
匹配br
和slash
之间的任何内容
<BR>
显示出来。我们该怎么做才能使其支持大小写字母呢? - Pinkiei
标志来实现不区分大小写。 - TeneffmyString.replace(/<br ?\/?>/g, "\n")
*
解决。 - James Khoury如果您想直接更改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没有什么关系,但是如果您想从字符串中裁剪模式(pattern),那么可以使用正则表达式:
<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>
。此外,该提问者并没有要求这样做。 - RobG
nl2br()
就是你需要的函数。 - xkeshav