C.O*_*.O. 0 javascript regex jquery
我想在JS中选择<br />一个<p></p>带有正则表达式的段落中的所有出现.目前我只选择<br />这样的:
var regex = /<br\s*[\/]?>/gi;
Run Code Online (Sandbox Code Playgroud)
但是这样做会给我带来麻烦,因为我正在尝试选择.我需要一个更精确的正则表达式,因为标题等中断与我无关.
如果你想知道这个的上下文,我想<br />用适当的类替换带有两个段落的's,就像一个<br />但是在中断后缩进文本,如下所示:
function removeEmptyNodes(selector)
{
$(selector).each(function() {
if ($(this).html().replace(/\s| /g, '').length == 0)
$(this).remove();
});
};
function assignIndents()
{
var str = $("#content").html();
var regex = /<br\s*[\/]?>/gi;
$("#content").html(str.replace(regex, "</p><br /><p>"));
$('br').prev('p').addClass('br');
$('br').next('p').addClass('indent');
removeEmptyNodes('#content p');
$('br').next('.scroller').children('p').first().addClass('indent');
$('br').replaceWith('');
removeEmptyNodes('#content p');
};
Run Code Online (Sandbox Code Playgroud)
编辑:
我的目标是我有一个带有一个或多个换行符的段落.像这个简单的案例:<p>with some text <br />and another line<p>.我希望换行后的文本缩进并且是自己的ap.所以我需要拆分原来的p.我不想在原始段落中添加div或其他嵌套的东西.我最后需要一堆兄弟p标签:<p class="br">with some text</p><p class="indent">and another line<p>
通过哪种方式我替换<br />'s来分割p对我来说无关紧要......
你为什么不在没有正则表达式的情况下找到所有?
$('p').each(function(){
var brs = $('br', this); //all <br>s withing this <p>
//do something with brs
});
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/maniator/Ra8ax/
更新:
以下是您对新规范的要求:
$('p').each(function(){
var html = this.innerHTML;
var htmlArray = html.split('<br>');
var new_html = htmlArray[0];
for(var i = 1; i < htmlArray.length; i++){
new_html += "<div class='break'>"+htmlArray[i]+"</div>";
}
this.innerHTML = new_html;
});
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/maniator/Ra8ax/8/
更新没有嵌套:
JS:
$('p').each(function(){
var html = this.innerHTML;
var htmlArray = html.split('<br>');
var new_html = "<p>"+htmlArray[0]+"</p>";
for(var i = 1; i < htmlArray.length; i++){
new_html += "<p class='break'>"+htmlArray[i]+"</p>";
}
$(this).replaceWith(new_html);
});
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/maniator/Ra8ax/11/