如何将新行匹配为一个?

时间:2015-03-18 13:59:07

标签: javascript regex

我想转此:

Lorem ipsum dolor sit amet

Ipsum dolor sit amet, consetetur 
eirmod tempor invidunt ut labore 

进入这个:

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

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

为了实现这一点,我拆分段落,应用正则表达式,最后再次加入它们:

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

不幸的是输出是这样的:

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

该段落的每一行都被视为一个段落。

如何修改我的代码以获得所需的结果?

3 个答案:

答案 0 :(得分:5)

你需要正则表达式吗?这也应该有用。

for (var i = 0; i < data.length; ++i) {
    data[i] = '<p>' + data[i]+ '</p>';
}

答案 1 :(得分:2)

使用正则表达式,您可以:

data = date.replace(/^(\S[\s\S]+?)(?=\n\n|$(?!\n))/gm, '<p>$1</p>');

RegEx Demo

答案 2 :(得分:0)

我通常使用[\ s \ S]匹配包含换行符的任何字符,所以我的修改:

for (var i = 0; i < data.length; ++i) {
  data[i] = data[i].replace(/([\s\S]+)/g, '<p>$1</p>');
}
相关问题