JS.next

JavaScriptの最新実装情報を追うブログ

正規表現にdotAllフラグが追加された

概要

正規表現でドット「.」を改行文字にもマッチさせることができるようになった。


説明

正規表現でドット「.」は殆どの文字にマッチするが、改行文字にはマッチしないという性質がある。
ES2018ではs(dotAll)フラグを付けることで、ドットを改行文字にもマッチさせることができるようになった。


例:

var text = `
JavaScriptは【プロトタイプベ
ース】のオブジェクト指向言語
である`

// 【】の中身が欲しいとき、改行文字が含まれるためドットを使うと上手くいかない
text.match( /【.+】/ )        // null 

// ES2017以前は改行文字にもマッチさせるためにしばしば/[\s\S]/や/[^]/が使われてきた
text.match( /【[\s\S]+】/ )  // "【プロトタイプベ↵ース】"
text.match( /【[^]+】/ )     // "【プロトタイプベ↵ース】"

// ES2018からはsフラグを立てることで単にドットを使うだけで良くなる
text.match( /【.+】/s )      // "【プロトタイプベ↵ース】"


実装されるバージョン

V8 5.9.144