TypeScriptの正規表現ガイド 基本のRegExpから文字列のマッチングまで

2023.08.16 に公開記事は 4 分で読めます
サムネイル画像

TypeScriptの正規表現について深くわかりやすく解説します。

この記事を通じて、正規表現の基本的な概念から RegExp オブジェクトの作成方法、そして文字列のマッチングテクニックまで学ぶことができます。

RegExp: 正規表現の基本

正規表現は文字列のパターンを表現するための強力な機能です。
その基本となるのが RegExp オブジェクトですね。

let regex1 = new RegExp('ab+c');
let regex2 = /ab+c/;

上記は2つの方法で正規表現を作成しています。
1つ目の方法はコンストラクタを使用し、2つ目の方法はリテラル表現を使用しています。

それぞれの正規表現が意味しているのは以下のとおりです。

  • a: 文字「a」にマッチします
  • b+: 文字「b」が1回以上連続する部分にマッチします つまり、b, bb, bbb, ... など
  • c: 文字「c」にマッチします

なので、この正規表現は以下のような文字列にマッチするわけですね。

  • abc (b が1回)
  • abbc (b が2回)
  • abbbc (b が3回)
  • ... そして b が1回以上連続する場合のいかなるパターン

ただし、ac(b が0回)や aabcc (a が2回)などの文字列にはマッチしません。

Regexp.prototype.test(): マッチするか確認

illust

.test() メソッドは 文字列が正規表現に合致するかどうか をブール値で返します。

let patternHello = /hello/;
let testResult = patternHello.test('hello world');
console.log(testResult);  // true

このコードでは hello worldhello という文字列が含まれているかを確認しています。
この場合含まれているため、結果的に true が返されます。

このように .test() メソッドを使うと、文字列の中に特定のパターンが含まれているかどうか を一瞬で確認できます!

Regexp.prototype.exec(): マッチ情報をゲット

続いて、.exec() メソッドは 文字列内でのマッチの詳細情報を取得 できます。
例えば以下のようなコードです。

let patternABC = /a(b)c/;
let matchInfo = patternABC.exec('Hey, abc is here!');
console.log(matchInfo[0]);  // abc
console.log(matchInfo[1]);  // b

このコードでは、Hey, abc is here! の中で a(b)c というパターンを見つけ、マッチした部分とキャプチャグループの情報を取得しています。

キャプチャグループは正規表現内の括弧 () で囲まれた部分を指し、この例では b が該当します。

String.prototype.match(): 文字列の視点からのマッチ

illust

最後に文字列メソッドである .match() は、正規表現に合致する部分を配列で返します。

let phrase = "The rain in Spain stays mainly in the plain";
let matchedParts = phrase.match(/ain/g);
console.log(matchedParts);  // ['ain', 'ain', 'ain']

このコードでは The rain in Spain stays mainly in the plain という文字列から ain というパターンを繰り返し探し、マッチした値を配列で取得しています。

また、/g フラグにより文字列全体でのすべてのマッチを取得できます。

このように正規表現を使いこなすと特定の値を取得する際にとても役立つため、覚えておくと便利です!

プロフィールアイコン

Syuu

フロントエンドが好きなWEBエンジニア Next.js / React / TypeScript

SHARE