【发布时间】:2011-10-07 04:45:57
【问题描述】:
我正在使用 Underscore 模板(基于 John Resig 的 Microtemplate),每当我尝试替换其中的换行符时,都会出现奇怪的行为。例如,如果我有这样的文字:
var message = 'Line1\r\n\r\nLine2';
如果我这样做,我可以用 br 标签正确地替换换行符:
$('#example1_no_template').html(message.replace(/\r?\n/g, '<br />'));
但是,如果我尝试用下面的示例代码替换下划线模板中的换行符,我不会插入任何 br 标记:
<script id="template1" type="text/html">
<%= message.replace(/\r?\n/g, '<br />') %>
</script>
<script>
var template1 = _.template($('#template1').html());
$('#example1_template').html(template1({ message: message }));
</script>
奇怪的是,如果我将模板中的正则表达式更改为以下内容,那么我会在各处插入各种 br 标签:
<script id="template3" type="text/html">
<%= message.replace(/[\r\n?]/g, '<br /><br />') %>
</script>
所有这些行为都显示在这个小提琴中:http://jsfiddle.net/GHtDY/5/
知道发生了什么吗?是否可以替换模板内的换行符?
【问题讨论】:
标签: javascript regex templates underscore.js underscore.js-templating