tbsten
@tbsten (てべすてん)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

JavaScript 正規表現 キャプチャについて

解決したいこと

JavaScriptで以下のコードを実行すると以下のような結果が得られると思います。

コード
/([a-z]{2})*/g.exec("abcdef")
実行結果
[
    "abcdef",
    "ef" //←ここ
    // 以下略
]

ここで、キャプチャグループ1(1つ目の丸括弧内の「[a-z]{2}」の部分)でキャプチャされた文字列は"ef"になっていますが、ここで[ "ab" , "cd" , "ef" ]のようにマッチしたはずのabcdもキャプチャするにはどうすれば良いですか?

用語等が間違っていたらごめんなさい。

0

2Answer

もしくは、IEが死んだ今、他のブラウザでは皆実装されているmatchAllを使うと言う方法もあり、これなら1発で全部取得できる。

// matchAllの結果がIteratorのため、Array.fromで配列化していることに注意
let results = Array.from("abcdef".matchAll(/([a-z]{2})/g)) 

console.log(results)

結果

> Array [Array ["ab", "ab"], Array ["cd", "cd"], Array ["ef", "ef"]]
1Like

Comments

  1. @tbsten

    Questioner

    ありがとうございます!解決しました。

    IEめ、永遠に眠れ。

Your answer might help someone💌