22
22

More than 3 years have passed since last update.

JavaScript: 正規表現で.+ .* を改行にマッチさせる

Last updated at Posted at 2020-05-12

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に書かない技術ネタなどもツイートしているので、よかったらフォローしてもらえると嬉しいです:relieved:Twitter@suin

22
22
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22