Javascript 如何将新线作为一条线进行匹配?
我想把这个转变为:Javascript 如何将新线作为一条线进行匹配?,javascript,regex,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> Lorem
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>
Lorem ipsum dolor sit amet
伊普苏姆·多洛·塞特
临时劳工局
为此,我将段落拆分,应用正则表达式,最后再次合并:
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("")
data=data.split('\n\n')
对于(变量i=0;i'))
}
data=data.join(“”)
不幸的是,结果是:
<p>Lorem ipsum dolor sit amet</p><p>Ipsum dolor sit amet, consetetur</p>
<p>eirmod tempor invidunt ut labore</p>
Lorem ipsum door sit amet
临时劳工局
该段的每一行都被视为一个单独的段落
如何修改代码以获得所需的结果?您需要regexp吗?这也应该奏效
for (var i = 0; i < data.length; ++i) {
data[i] = '<p>' + data[i]+ '</p>';
}
for(变量i=0;i';
}
我通常使用[\s\s]匹配任何字符,包括换行符,因此我的修改:
for (var i = 0; i < data.length; ++i) {
data[i] = data[i].replace(/([\s\S]+)/g, '<p>$1</p>');
}
for(变量i=0;i');
}
使用正则表达式,您可以执行以下操作:
data = date.replace(/^(\S[\s\S]+?)(?=\n\n|$(?!\n))/gm, '<p>$1</p>');
data=date.replace(/^(\S[\S\S]+?)(?=\n\n |$(?!\n))/gm,$1);
默认情况下,正则表达式按行运行。在您的
消费之后有一个\n
,导致(.+)
在那里停止匹配。尝试添加多行标志:/(.+)/gm
。使用数据。加入(“\n\n”)
@Marc B奇怪,我添加了m
。仍然得到相同的结果。我不想包括新行。很好。和我一样使用for
循环有什么好处吗?或者是同一件事?我相信这是更少的代码,更容易理解。就效率而言,我认为这两种方法或多或少是相同的。