将\ n或\ r更改为<br/>

时间:2015-08-30 21:22:29

标签: javascript css regex

我有一个字符串,我从API看起来像这样:

[{"lat":"39.142971","lng":"-77.215924","hours":"Monday - Wednesday: 11:30am to 11:00pm\r\nThursday: 11:00am to 11:00pm\r\nFriday-Saturday: 11:00am to 12:00am\r\nSunday: 11:30am to 10:00pm","phone":"3019634847","name":"DFH Alehouse, Gaithersburg"}]

当我解析我正在运行它的时间时,当我在网页上显示它时创建新行:

hours = hours.replace(/(?:\\[rn])+/g, "<br/>");

但是当它显示时,它没有插入换行符。对我来说奇怪的是,当我将自己的数据存储在我的数据库中时,我用\ n输入上述代码就可以了。但现在我从api那里拿走它。

2 个答案:

答案 0 :(得分:2)

Javascript将\r\n自动解析为换行符。所以你的正则表达式应该寻找换行符(而不是字符串)。它应该是这样的:

hours = hours.replace(/\r\n|\n|\r/g,'<br/>');

/\r\n|\n|\r/g这是&#34;最终解决方案&#34;。它首先寻找回车和换行配对,唯一的换行然后回车。 (这是受@torazaburo的启发)

正如@torazaburo所说,您可能不应该编辑文本,而只需将white-space:pre;添加到您的容器中。这是资源密集程度较低,使用更多&#34; vanilla&#34;方式。

答案 1 :(得分:0)

你的正则表达式试图找到一个反斜杠然后&#39; r&#39;或者&#39; n&#39;。

尝试改为:

/[\n\r]{0,2}/g

找到所有换行符或回车