我正在使用 Underscore 模板(基于 John Resig 的 Microtemplate),每当我尝试替换其中的换行符时,都会出现奇怪的行为。例如,如果我有这样的文字:
var message = 'Line1\r\n\r\nLine2';
如果我这样做,我可以用 br 标签正确地替换换行符:
$('#example1_no_template').html(message.replace(/\r?\n/g, '<br />'));
但是,如果我尝试用下面的示例代码替换 Underscore 模板中的换行符,我不会插入任何 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>
所有这些行为都显示在这个小提琴中: //jsfiddle.net/GHtDY/5/
知道发生了什么吗?是否可以替换模板内的换行符?