JavaScriptの正規表現とは
正規表現を使う事でできること 正規表現を使う事で、テキストデータのパターンマッチングや検索、置換、バリデーションなど、さまざまなことができます。以下に正規表現の主な用途をいくつか示します: 正規表現は非常に柔軟で強力なツールであり、テキスト処理やパターンマッチングにおいて幅広く活用されています。しかし、正規表現の使用は適切な文脈と適切な知識に基づいて行われる必要があります。 正規表現とは 正規表現(正規表現、regexとも呼ばれる)は、開発者が文字列をパターンに一致させたり、サブマッチの情報を抽出したり、単純に文字列がそのパターンに適合するかどうかをテストしたりするためのものです。正規表現は多くのプログラミング言語で使用されており、JavaScriptの構文はPerlに触発されています。 概要 正規表現は形式言語理論における重要な概念です。正規表現は、可能性のある無限の文字列の集合(言語と呼ばれる)を記述する方法です。正規表現は、次の機能を必要とします。 有限のアルファベット(英語のアルファベットの26文字や、Unicode文字セット全体など)を想定すると、上記の機能ですべての正規言語を生成することができます。もちろん、「10桁の数字」や「スペースではない文字」といったパターンは、非常に煩雑になることが多いため、JavaScriptの正規表現には、以下で紹介する多くの省略記法が含まれています。 注:JavaScriptの正規表現は実際には正規ではありません。バックリファレンスの存在により(正規表現は有限の状態を持つ必要があります)、正規ではありません。ただし、それらは非常に便利な機能です。 正規表現の作成 正規表現は通常、パターンをスラッシュ(/)で囲むことによってリテラルとして作成されます。 正規表現はRegExp()コンストラクタを使用しても作成できます。 これらにはランタイム上の違いはありませんが、パフォーマンス、静的解析可能性、およびエスケープ文字の作成のしやすさに関連する問題に影響を与える場合があります。 正規表現フラグ フラグは、正規表現の解釈方法や入力テキストとの相互作用方法を変更できる特別なパラメータです。各フラグは、RegExpオブジェクト上の1つのアクセサプロパティに対応します。 以下のセクションでは、構文の性質に基づいてグループ化された、利用可能な正規表現構文のすべてをリストしています。 フラグ 説明 プロパティ d 部分一致のためのインデックスを生成します。 hasIndices g グローバル検索を実行します。 global i 大文字と小文字を区別しない検索を行います。 ignoreCase m ^および$が改行文字に一致するようにします。 multiline s .が改行文字に一致するようにします。 dotAll u “Unicode”。パターンをUnicodeコードポイントのシーケンスとして扱います。 unicode y “sticky”検索を実行し、対象の文字列の現在の位置から一致を開始します。 sticky フラグを使用した正規表現のサンプルコード: 上記のコードでは、それぞれのフラグに基づいて正規表現パターンを評価しています。matchメソッドやtestメソッド、execメソッドを使用して、対象の文字列においてパターンに一致する部分を取得したり、一致するかどうかをテストしたりしています。 アサーション アサーションは、指定した位置で文字列が特定の条件を満たすかどうかをテストする構造ですが、文字を消費しません。アサーションは数量化できません。 入力境界アサーション:^、$ 現在の位置が入力の先頭または末尾であること、またはmフラグが設定されている場合は行の先頭または末尾であることをアサートします。 先読みアサーション:(?=…)、(?!…) 現在の位置の後に特定のパターンが続くかどうかをアサートします。 後読みアサーション:(?<=…)、(?<!…) 現在の位置が特定のパターンに先行しているかどうかをアサートします。 単語境界アサーション:\b、\B 現在の位置が単語境界であることをアサートします。 各アサーションを使用した正規表現のサンプルコード: 上記のコードでは、各アサーションを含む正規表現パターンを使用して、対象の文字列に対してパターンマッチングを行っています。それぞれのアサーションに基づいて、文字列内での位置や条件に一致するかどうかをテストしています。 アトム … Read more