2013年09月13日に投稿

[Javascript] PHP の preg_match_all 関数のようにキャプチャの結果が格納された配列を得たい

PHP の preg_match_all 関数は、Qiita に投稿した記事のとおり、結果として返される配列の 1 番目の要素にキャプチャの結果が格納されます。これを Javascript でやろうと思ったのですが、苦戦しました。

結論としては、PHP の preg_match_all 関数のように、1 回実行してすぐに結果を得ることができないため、下記のように while 構文を使って繰り返し実行する必要がありました。

下記のコードは、規則的なテキストから、li タグの中身のテキストだけを配列として抜き出すコードです。

6 行目
Javascript では 1 回の実行でキャプチャした部分を全て取得できないため、正規表現オブジェクトの exec メソッドが false を返すまで繰り返し実行します。 exec メソッドは 1 回実行すると、どこまで検索を行ったのか位置を覚えていてくれるようで、次に実行した時に、その位置から検索を開始してくれます。なお、この動作を実現するためには正規表現に g フラグが必要でした。(2 行目の末尾あたりに書いている g という文字がそれです。)

7 行目
exec メソッドによってキャプチャされた結果は配列として返され、1 番目の要素に格納されています。

関連記事

Leave a Reply