LoginSignup
6
4

More than 5 years have passed since last update.

正規表現におけるグループ化と JavaScript の match メソッドの戻り値について

Last updated at Posted at 2018-07-24

正規表現で括弧を使うとグループが作られる

以下のような場合、配列 result には2つの値が入ります。

sample.js

var result = 'ABC1000'.match(/^(ABC|XYZ)\d+/)

console.log(result[0]) // 'ABC1000'
console.log(result[1]) // 'ABC'

なぜ result[1] の値が返ってくるのでしょうか。
これは、括弧で囲った (ABC|XYZ) について、どちらのグループに属しているかを示す役割を果たしてくれているんですね。正規表現では括弧を使うことで特定の部分をグループ化することができます。

※正規表現内 ^(ABC|XYZ) の部分は「文字列の最初に ABC もしくは XYZ がくる」を意味しています。

グループ化すれば特定の部分だけを取り出せる

これは正規表現で文字列を検索した後、特定の部分のみを使いたいときに便利です。
例えば、最初の ABC ではなく、最後の数字の部分だけ欲しいのであれば \d+ にも括弧をつけてあげれば取り出せます。

sample.js
var result = 'ABC1000'.match(/^(ABC|XYZ)(\d+)/)

console.log(result[0]) // 'ABC1000'
console.log(result[1]) // 'ABC'
console.log(result[2]) // '1000'

また、どのグループに属するかを示す ABC を使わない場合、?: を付けてあげれば配列に入ってきません。

sample.js
var result = 'ABC1000'.match(/^(?:ABC|XYZ)(\d+)/)

console.log(result[0]) // 'ABC1000'
console.log(result[1]) // '1000'

以上~

6
4
0

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
6
4