【问题标题】:Why is this p tag being added as a new line?为什么这个 p 标签被添加为新行?
【发布时间】:2015-05-22 12:40:00
【问题描述】:

以下代码拆分data,应用正则表达式,并再次加入字符串(有一部分删除了单词之间的新行,因为我希望段落在单个块​​/行中输出):

输入:

Lorem ipsum dolor sit amet

Ipsum dolor sit amet, consetetur eirmod tempor invidunt ut labore

代码:

data = data.split('\n\n')
for (var i = 0; i < data.length; ++i) {
  data[i] = '<p>' + data[i].replace(/\n(?=\w+)/g, ' ') + '</p>'
}
data = data.join('\n\n')

我认为输入是:

<p>Lorem ipsum dolor sit amet</p>

<p>Ipsum dolor sit amet, consetetur eirmod tempor invidunt ut labore</p>

但不是,而是:

<p>Lorem ipsum dolor sit amet</p>

<p>Ipsum dolor sit amet, consetetur eirmod tempor invidunt ut labore
</p>

可能是什么原因?

【问题讨论】:

  • 这个问题是不是这个:stackoverflow.com/questions/29124091/…
  • @ʰᵈˑ 不,我问的是完全不同的事情。
  • 还有什么问题,HTML 中的换行符不重要?
  • 同样,无法重现-> jsfiddle.net/4o5w2oj6
  • 这是因为您的真实字符串末尾有一个换行符(不是您帖子中的那个),所以由于它后面没有单词字符,因此不会替换换行符。您可以像这样更改前瞻:(?=\w|$)。顺便说一句,在这里添加量词(?=\w+) 是没有用的,(?=\w) 也会这样做。

标签: javascript html regex


【解决方案1】:

如果您的输出在结束 &lt;/p&gt; 标记之前显示一个换行符,那么您的 real world 输入必须在末尾包含一个换行符。以下代码对我很有效:

/* note that you cannot declare a multiline string in javascript
   like you did. I'm using `Array.join()` to create the example data */
data = [
  "Lorem ipsum dolor sit amet",
  "",
  "Ipsum dolor sit amet, consetetur",
  "eirmod tempor invidunt ut labore"
].join("\n");

data = data.split('\n\n')
for (var i = 0; i < data.length; ++i) {
  data[i] = '<p>' + data[i].replace(/\n(?=\w+)/g, ' ') + '</p>'
}
data = data.join('\n\n')

【讨论】:

    【解决方案2】:

    我认为您的原始字符串中有一个尾随换行符,但您只需稍作改动即可解决问题。不是检查换行符后面是否有单词字符,而是检查后面是否没有空格字符:

    var data = "Lorem ipsum dolor sit amet\n"
             + "\n"
             + "Ipsum dolor sit amet, consetetur\n"
             + "eirmod tempor invidunt ut labore\n";
    
    var data = data.split('\n\n');
    for (var i = 0; i < data.length; ++i) {
      data[i] = '<p>' + data[i].replace(/\n(?!\s)/g, '') + '</p>'
    }
    data = data.join('\n\n');
    
    console.log(data);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2017-05-06
      • 1970-01-01
      相关资源
      最近更新 更多