关于javascript正则表达式解析行和包装行的问题

关于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

我需要解析一些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 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”);但没有效果