Node.js Jade-将新行转换为<;br/>;并对内容进行编码

Node.js Jade-将新行转换为<;br/>;并对内容进行编码,node.js,pug,Node.js,Pug,我还不太熟悉Jade模板引擎。是否有办法将新行(如\n转换为br标记,同时对其他内容进行编码 比如说 .replace(/\n/g,'</br>') 。替换(/\n/g,) 应用于编码的值应该完成这项工作。但是,我不确定如何对值进行编码并得到结果。有没有帮手 您可以使用jades escape方法并替换该方法返回值中的换行符,如下所示: p !{escape(foo).replace(/\n/g, '<br/>')} p!{escape(foo).replace(/

我还不太熟悉Jade模板引擎。是否有办法将新行(如\n转换为br标记,同时对其他内容进行编码

比如说

.replace(/\n/g,'</br>')
。替换(/\n/g,

应用于编码的值应该完成这项工作。但是,我不确定如何对值进行编码并得到结果。有没有帮手

您可以使用jades escape方法并替换该方法返回值中的换行符,如下所示:

p !{escape(foo).replace(/\n/g, '<br/>')}
p!{escape(foo).replace(/\n/g,“
”)}
我不知道您的用例有任何内置功能


看起来帕格去掉了转义函数,所以现在您必须使用:

p !{foo.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\n/g, '<br/>')}
p!{foo.replace(//&g,,&;')。replace(//g,,)。replace(//\n/g,,
')}
您可以做到这一点:

p !{someString.replace(/\n/g, '<br/>')}
p!{someString.replace(/\n/g,
')}

请注意,此方法将正确转义字符串。

转义方法甚至将简单空格(“”)字符转换为“%20”

它是用来编码url中的字符串,而不是html内容。 另一个解决方案

each line in foo.split(/\n/)
  = line
  br

如果您不需要

,只需将文本放入标记中即可。所有空白(包括新行)将显示为已键入


或者您可以设置css规则
空白:pre
以保留空白预格式化。检查这个。

大多数答案都说你需要做
p!{foo.replace(/\n/g)}
。但是,这还不够:正则表达式中的
\n
与新行字符匹配,因此需要转义
\
中的
\n
。您可以通过向
\n
添加额外的
\
来完成此操作。

最终结果:

p!{foo.replace(/\\n/g,
)}
注意:如果还想转义其他字符,只需添加:
.replace(//&g',&;')。replace(//g',)

编辑:

您可以使用
p{foo.replace…}
正确转义html标记中的所有字符。如果您想防止用户在输入字段中插入
标记以入侵您的网站,这将非常有用。

这就是我要说的!谢谢,伙计,那不是杰德的方法。由于模板编译成JS函数,所以可以使用其中的任何节点和V8全局变量。虽然确实可以使用全局方法,但这不是全局转义方法。全局转义方法将为每个
@返回
%3C
。抱歉,dave不知道这一点。谢谢。正在尝试格式化我的模板中的pug错误消息,
.message!{message.replace(/\n/g,“
”)}
已经足够了。将其与
换行符结合使用:断开单词
wordwrap:break word
如果没有可接受的点,则在任意点将单词拆分。如果您只需要简单的文本格式,将单词换行到下一行,请尝试
空白:pre wrap
它不是转义someString变量,现在它可以呈现丰富的html内容,例如xss:(
p !{foo.replace(/\\n/g, '<br />')}