改行が残る件

javascriptでformで入力されたの文の改行文字を<br/>に変換していたんだけど、


以下のコードはメインのmacのfirefox2では上手くいっていたが、それ以外では改行が残ってエラーになった。

msg.replace(/\n/g,'<br/>');
alert(msg);

/*
 form中身
foo
bar
baz
 実行結果↓
foo
<br />bar
<br />baz
*/


以下のように書けば他(IE,Op等)でも上手くいった。

msg.replace(/(\r|\n)/g,'<br/>');
alert(msg);
/*
 form中身
foo
bar
baz
 実行結果↓
foo<br />bar<br />baz
*/


よくよく考えると、firefoxで上手くいくほうがおかしいのかもしれない。
改行コードには2種類あって、CRとLFというんだけど、


それぞれ

CR /\r/ \x0D(13)
LF /\n/ \x0A(10)

と表す。


で、OSによって使うコードが違う。
対応状況は以下

mac CR \x0D(13)
unix LF \x0A(10)
windows CRLF \x0D\x0A(1310)

見るとわかるように、windowsには改行文字が二つはいっている。
なので、この二つを指定してやら無いといけない。よって、/(\r|\n)/gとなる。
ちなみに、
foo
<br />bar
となることからも、CRLFの順であることが伺える。
macは最近unix化したので、おそらくLF(/\n/)で問題なかったんじゃないか。
でもwinでもfirefoxだと上手くいってたしなーそのあたりは謎。