Javascript 下划线/微模板替换换行符-奇怪的行为

Javascript 下划线/微模板替换换行符-奇怪的行为,javascript,regex,templates,underscore.js,underscore.js-templating,Javascript,Regex,Templates,Underscore.js,Underscore.js Templating,我使用的是下划线模板(基于John Resig的微模板),每当我试图替换其中的换行符时,就会出现奇怪的行为。例如,如果我有这样的文本: var message = 'Line1\r\n\r\nLine2'; 如果我这样做,我可以用br标记正确地替换换行符: $('#example1_no_template').html(message.replace(/\r?\n/g, '<br />')); $('example1\u no\u template').html(message.

我使用的是下划线模板(基于John Resig的微模板),每当我试图替换其中的换行符时,就会出现奇怪的行为。例如,如果我有这样的文本:

var message = 'Line1\r\n\r\nLine2';
如果我这样做,我可以用br标记正确地替换换行符:

$('#example1_no_template').html(message.replace(/\r?\n/g, '<br />'));
$('example1\u no\u template').html(message.replace(/\r?\n/g,
');
但是,如果我尝试用下面的示例代码替换下划线模板中的换行符,则不会插入任何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>

var template1=..template($('.#template1').html();
$('#example1_template').html(template1({message:message}));
奇怪的是,如果我将模板中的正则表达式更改为以下内容,那么我会在所有地方插入各种br标记:

<script id="template3" type="text/html">
    <%= message.replace(/[\r\n?]/g, '<br /><br />') %>
</script>

所有这些行为都显示在这把小提琴上:


知道发生了什么吗?是否可以替换模板中的换行符?

我想知道下划线的模板解析器是否有一些错误。如果使用RegExp对象语法而不是regex文本语法:

<script id="template1" type="text/html">
    <%= message.replace(new RegExp('\r?\n', 'g'), '<br />') %>
</script>
消息
包含一些数字但使用
new RegExp

<script id="template1" type="text/html">
    <%= message.replace(new RegExp('\d', 'g'), '<br /><br />') %>
</script>


工作正常。

解释得很好。非常感谢。
<script id="template1" type="text/html">
    <%= message.replace(/\d/g, '<br /><br />') %>
</script>
<script id="template1" type="text/html">
    <%= message.replace(new RegExp('\d', 'g'), '<br /><br />') %>
</script>