JavaScriptの正規表現の.
は、改行文字にはマッチしません:
console.log('\r\n123abc'.match(/./g))
console.log('\r\n123abc'.match(/.+/g))
結果
[ '1', '2', '3', 'a', 'b', 'c' ]
[ '123abc' ]
正規表現で.
を改行にマッチさせる方法 (ES2018以降)
ECMAScript 2018以降のJavaScriptで、.
を改行にマッチさせるには、/s
(dotAll)フラグを使います:
console.log('\r\n123abc'.match(/./gs))
console.log('\r\n123abc'.match(/.+/gs))
結果
[
'\r', '\n', '1',
'2', '3', 'a',
'b', 'c'
]
[ '\r\n123abc' ]
正規表現で.
を改行にマッチさせる方法 (ES2018未満)
ECMAScript 2017までのJavaScriptで、.
を改行にもマッチさせるには、[\s\S]
を使います:
console.log(`\r\n123abc`.match(/[\s\S]/g))
console.log(`\r\n123abc`.match(/[\s\S]+/g))
結果
[
'\r', '\n', '1',
'2', '3', 'a',
'b', 'c'
]
[ '\r\n123abc' ]
[\s\S]
とは?
\s
スペース、タブ、改行など、空白文字にマッチする文字クラスです。
\S
\s
以外の文字全てにマッチする文字クラスです。
[...]
[
から]
にリストアップされた文字どれかにマッチするという意味です。
例えば、[abc]
は'a'
、'b'
、'c'
にマッチします。
要するに、[\s\S]
とは?
空白文字、もしくは、空白文字以外にマッチするという意味です。
つまるところ、どんな文字にもマッチするということになります。
最後までお読みくださりありがとうございました。Twitterでは、Qiitaに書かない技術ネタなどもツイートしているので、よかったらフォローしてもらえると嬉しいです→Twitter@suin