关于javascript正则表达式解析行和包装行的问题
我需要解析一些html并修改它 我有以下HTML:关于javascript正则表达式解析行和包装行的问题,javascript,jquery,regex,Javascript,Jquery,Regex,我需要解析一些html并修改它 我有以下HTML: When and how often am I online? <br> tuesday,thursday,saturday night <br> <br> Taboos <br> i dont think i need it).... <br> <br> If I´m momentarily not online, then... <br> I read a
When and how often am I online?
<br>
tuesday,thursday,saturday night
<br>
<br>
Taboos
<br>
i dont think i need it)....
<br>
<br>
If I´m momentarily not online, then...
<br>
I read a book
<br>
<br>
the best party, I ever attended
<br>
It was Italy
<br>
<br>
my favourite sport
<br>
I go to fitness
我何时以及多久上网一次?
星期二、星期四、星期六晚上
禁忌
我想我不需要它。。。。
如果我暂时不在线,那么。。。
我读了一本书
我参加过的最好的聚会
那是意大利
我最喜欢的运动
我去健身
我只需要按span标记换行一些行:
<span>When and how often am I online?</span>
<br>
tuesday,thursday,saturday night
<br>
<br>
<span>Taboos</span>
<br>
i dont think i need it)....
<br>
<br>
<span>If I´m momentarily not online, then...</span>
<br>
I read a book
<br>
<br>
<span>the best party, I ever attended</span>
<br>
It was Italy
<br>
<br>
<span>my favourite sport</span>
<br>
I go to fitness
我何时以及多久上网一次?
星期二、星期四、星期六晚上
禁忌
我想我不需要它。。。。
如果我暂时不在线,那么。。。
我读了一本书
我参加过的最好的聚会
那是意大利
我最喜欢的运动
我去健身
其他无变化
我怎么做?我可以使用什么正则表达式
UDPATE
这是我尝试过的,但没有成功:
description = description.replace(/<br><br>(.*)<br>/g,"<span>$1</span>");
description=description.replace(/
(.*)
/g,“$1”);
我建议您重新考虑您的策略,因为像这样使用javascript的HTML操作会很快变得丑陋。您如何确保HTML总是有这样的精确设置
如果你仍然认为你真的需要做替换,我已经创建了一个新的
javascript在每个换行符处拆分字符串,然后循环遍历每个值以检查需要对其执行的操作
var lines = yourHtmlString.split('\n');
var arr = [];
var lineCounter = 0;
for(var i = 0;i<lines.length;i++) {
if(lineCounter == 2 || i == 0) {
arr.push('<span>' + lines[i] + '</span>');
lineCounter = 0;
}
else {
arr.push(lines[i]);
}
if(lines[i] == '<br>') {
lineCounter++;
}
else {
lineCounter = 0;
}
}
console.log(arr);
console.log(arr.join(''));
var lines=yourHtmlString.split('\n');
var-arr=[];
var-lineCounter=0;
对于(var i=0;i您不需要正则表达式;只需使用浏览器附带的简单逻辑和HTML处理即可:
var container = document.createElement('div');
container.innerHTML = html;
var shouldWrap = true,
lineBreaks = 0;
[].forEach.call(container.childNodes, function(node) {
if (node.nodeType == 3 && shouldWrap) {
// okay, this is a little tricky =p
var wrapper = document.createElement('span'),
next = node.nextSibling;
wrapper.appendChild(node);
if (next) {
container.insertBefore(wrapper, next);
} else {
container.appendChild(wrapper);
}
shouldWrap = false;
lineBreaks = 0;
} else if (node.nodeName = 'BR') {
if (++lineBreaks >= 2) {
shouldWrap = true;
}
}
});
console.log(container.innerHTML);
你尝试过什么?所以不是免费的编码服务(虽然有时感觉像!):)请解释“只有几行”。。。。哪种行?我尝试过的第一行和
之后的行:description=description.replace(/
(.*)
/g,“$1”);但没有效果