JavaScript: 改行をすべて削除する

改行コード(\r\nまたは\n)をすべて削除するには次のように記述します。


str = str.replace(/\r?\n/g, '');

次のように\r\nと\nを別々に2行で記述しても結果は同じです。


str = str.replace(/\r\n/g, '');
str = str.replace(/\n/g, '');

どちらでも得られる結果は同じですが、1行で記述した方がシンプルで良いかと思います。

?はメタ文字

「\r?\n」にある「?」は、正規表現でメタ文字と呼ばれる特殊文字です。 ?の直前の文字(この場合は\r)を0回または1回繰り返す、という意味です。

ですから「\r?\n」は「\nまたは\r\n」と同じ意味です。

今回のケースのように、基本的なメタ文字だけでも知っていると、コードをシンプルに記述できる場合が 多くあります。

「g」で全てを置換

/\r?\n/の後に「g」が付いています。 これはグローバルマッチと言って、一致したものを全て置換するためにはこの「g」が必要です。

もし「g」がなければ最初に一致した所で処理が終了してしまいます。 全てを置換したい場合は「g」を付けてください。

JavaScript入門