JavaScriptにおける「正規表現」と「テキスト操作」の重要な概念は、ウェブ開発において非常に役立つものです。これらは、文字列のパターン検索や変換を効率的に行うために広く使用されています。この記事では、JavaScriptにおける正規表現(RegExp)とテキスト操作の基礎から応用に至るまでを完全かつ包括的に解説します。
1. 正規表現の基本
正規表現(RegExp)は、文字列の検索や置換、抽出を行うための強力なツールです。JavaScriptにおいて正規表現を使用するには、RegExpオブジェクトを使うか、リテラル表現を用います。
1.1 正規表現リテラル
正規表現リテラルは、スラッシュ(/)で囲まれたパターンを使って定義されます。例えば、/abc/は「abc」という文字列を検索する正規表現です。
javascriptlet regex = /abc/;
1.2 RegExpオブジェクト
RegExpコンストラクタを使って正規表現を動的に作成することもできます。
javascriptlet regex = new RegExp('abc');
2. 正規表現の構文
正規表現の構文は多岐にわたりますが、基本的なパターンとメタキャラクターについて解説します。
2.1 メタキャラクター
メタキャラクターは、特定の動作を指示するために使います。代表的なものをいくつか紹介します。
.:任意の一文字を表す。^:文字列の先頭を表す。$:文字列の末尾を表す。*:直前の文字が0回以上繰り返されることを意味する。+:直前の文字が1回以上繰り返されることを意味する。?:直前の文字が0回または1回であることを意味する。[]:角括弧内のいずれかの文字と一致する。|:選択を表す、例えばabc|defはabcまたはdefに一致する。
2.2 グループ化とキャプチャ
括弧 () を使って、文字列の一部をグループ化することができます。これにより、後でその部分にアクセスすることができます。
javascriptlet regex = /(abc)/;
3. 正規表現メソッド
JavaScriptには正規表現を扱うためのメソッドがいくつか用意されています。主なメソッドを紹介します。
3.1 test() メソッド
test()メソッドは、文字列が正規表現に一致するかどうかを判断します。真偽値を返します。
javascriptlet regex = /abc/;
let result = regex.test('abcdef'); // true
3.2 exec() メソッド
exec()メソッドは、文字列が正規表現に一致した場合、その一致した部分を返します。もし一致しなければnullを返します。
javascriptlet regex = /(abc)/;
let result = regex.exec('abcdef'); // ['abc', index: 0, input: 'abcdef', groups: undefined]
4. 正規表現を使った文字列操作
JavaScriptでは、文字列の操作において正規表現を活用することがよくあります。以下のメソッドを使用して、文字列内のパターンを検索、置換、抽出できます。
4.1 match() メソッド
match()メソッドは、文字列に正規表現が一致する部分をすべて配列として返します。
javascriptlet str = 'abc def abc';
let regex = /abc/g;
let result = str.match(regex); // ['abc', 'abc']
4.2 replace() メソッド
replace()メソッドは、正規表現に一致する部分を別の文字列に置き換えます。
javascriptlet str = 'abc def abc';
let regex = /abc/g;
let result = str.replace(regex, 'xyz'); // 'xyz def xyz'
4.3 split() メソッド
split()メソッドは、正規表現を使って文字列を分割します。
javascriptlet str = 'apple,banana,orange';
let regex = /,/;
let result = str.split(regex); // ['apple', 'banana', 'orange']
5. 正規表現のフラグ
正規表現には、パターンマッチングの動作を変更するためのフラグがあります。主要なフラグを以下に示します。
g:グローバル検索(すべての一致を検索)i:大文字小文字を区別しない検索m:複数行の検索
例:
javascriptlet regex = /abc/i; // 大文字小文字を区別しない
6. よく使う正規表現のパターン
以下に、よく使われる正規表現パターンをいくつか紹介します。
6.1 電話番号のバリデーション
日本の電話番号を検証する正規表現の例です。
javascriptlet regex = /^0\d{1,4}-\d{1,4}-\d{4}$/;
let result = regex.test('090-1234-5678'); // true
6.2 メールアドレスのバリデーション
メールアドレスの基本的な検証正規表現です。
javascriptlet regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
let result = regex.test('[email protected]'); // true
6.3 日付のフォーマット検証
YYYY-MM-DD形式の日付を検証する正規表現の例です。
javascriptlet regex = /^\d{4}-\d{2}-\d{2}$/;
let result = regex.test('2025-03-14'); // true
7. 結論
JavaScriptの正規表現とテキスト操作は、文字列のパターン検索や加工を非常に効率的に行える強力なツールです。基本的な構文とメソッドを理解し、日々の開発に活用することで、より高度な文字列操作が可能になります。
