アンダースコアテンプレート(John Resigのマイクロテンプレートに基づく)を使用していますが、その中の改行を置き換えようとすると、奇妙な動作が発生します。たとえば、次のようなテキストがある場合:
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/
何が起こっているのか分かりますか?テンプレート内の改行を置き換えることは可能ですか?