使用正则表达式时遇到很多困难。
继承人我想做的事情......
text<div> text </div><div> text </div><div> text </div>
将其转入
text<br> text<br>text<br>text
我已经尝试过......
newhtml = newhtml.replace(/\<div>/g,'<br>');
newhtml = newhtml.replace(/\</div>/g,' ');
但这会产生错误的输出。 jquery是否提供了更好的方法呢?
答案 0 :(得分:6)
那是因为你正在逃避错误的事情,因为只需要反复使用反斜杠。
newhtml = newhtml.replace(/<div>/g,'<br>');
newhtml = newhtml.replace(/<\/div>/g,' ');
答案 1 :(得分:2)
是的,你是对的,jQuery确实提供了一种更好的方法。
轻松,优雅,解决您的具体问题。
$('div').replaceWith(function(){
return "<br>"+$(this).html();
});
答案 2 :(得分:1)
这必须完成这项工作:
text.replace(/(<\/?\w+?>)\s*?(<\/?\w+?>)|(<\/?\w+?>)/g,'<br>')
虽然这只有在没有像[{1}}这样的属性的标签时才有效
您不需要像在示例中那样转义<div id="foo1">
,而是需要转义<
答案 3 :(得分:1)
如果您不需要,请不要使用正则表达式;只需替换字符串文字。
text.replace("<div>","<br>").replace("</div>","");
注意:此解决方案完全适用于此方案,我通常不会反对使用常规表达式。
答案 4 :(得分:0)
执行此操作的简单方法如下:
$('.container').html(function(i, html) {
return html.replace(/<(|\/)div>/g, function(match) {
return match == '<div>' ? '<br>' : '';
});
});
/<(|\/)div>/
:匹配<div>
或</div>
。
注意:.container
是放置html的地方。
答案 5 :(得分:0)
使用JQuery的一个班轮
newhtml = $(newhtml ).text().split(' ').join('<br/>');
答案 6 :(得分:0)
您可以使用简单的RegExp
来实现这一目标 output = inputText.replace(/<\w{0,}\W{0,}>|<\W{0,}\w{1,}>/ig, "With whatever you want it to be replaced with")
或者你可以这样做
String.prototype.replaceTags = function( replacementText )
{
var x = new RegExp( "(" + replacementText + ")+" , "ig");
return this
.replace( /<\w{0,}\W{0,}>|<\W{0,}\w{1,}>/ig, replacementText )
.replace( x, replacementText )
}
然后直接在String上调用它,如下所示
"text<div> text </div><div> text </div><div> text </div>".replaceTags( "<br>" )
你会得到这个 - "text<br> text <br> text <br> text <br>"
这将搜索字符串中以“&lt;”开头的部分如果标签以“/”结束,最后是“&gt;”,则在“div / p / br”之间包含一些文本。关闭标签。当您不确定元素是以大写还是小写形式写时,忽略大小写会有所帮助。