JavaScriptの正規表現入門|文字列検索と置換の基本

先生

JavaScriptの正規表現をマスターして、文字列操作を自由自在に!もう文字列処理で悩むことはありません。

JavaScript 正規表現とは?基本を理解しよう

JavaScriptの正規表現は、文字列の中から特定のパターンを見つけたり、置換したりするための強力なツールです。Web開発において、ユーザー入力の検証、データの整形、テキスト処理など、様々な場面で活躍します。この記事では、正規表現の基本的な概念から、具体的な使用例までをわかりやすく解説します。

正規表現をマスターすることで、JavaScriptのコードがより効率的になり、問題解決の幅が広がります。初心者の方でも安心して学べるように、基礎から丁寧に説明していきますので、ぜひ最後までお読みください。

正規表現は、文字列のパターンを記述するための特殊な文字列です。例えば、「数字が連続するパターン」や「特定の単語で始まるパターン」などを表現できます。これらのパターンを使って、文字列の検索、置換、検証などが可能です。

JavaScriptでは、RegExpオブジェクトを使って正規表現を扱います。RegExpオブジェクトは、リテラル表記またはコンストラクタで作成できます。

正規表現の作成方法:リテラルとコンストラクタ

正規表現を作成する方法は2つあります。リテラル表記とコンストラクタです。どちらの方法も同じ結果を得られますが、使い分けがあります。

リテラル表記は、スラッシュ(/)で囲まれた正規表現パターンを記述します。この方法は、パターンが固定されている場合に便利です。

const regex = /hello/;

コンストラクタは、RegExpオブジェクトをnewキーワードで作成します。パターンが変数である場合や、動的に生成される場合に便利です。

const pattern = 'world';
const regex = new RegExp(pattern);

リテラル表記はパフォーマンスが良いとされていますが、コンストラクタは動的なパターンを扱う際に柔軟性があります。

正規表現の基本構文:メタ文字と量指定子

正規表現の構文は、メタ文字と量指定子で構成されています。メタ文字は、特殊な意味を持つ文字で、量指定子は、文字の繰り返し回数を指定します。

主なメタ文字:

. (ドット): 任意の1文字

^ (ハット): 文字列の先頭

$ (ドル): 文字列の末尾

\d: 数字 (0-9)

\w: 英数字 (a-z, A-Z, 0-9, _)

\s: 空白文字 (スペース、タブ、改行など)

主な量指定子:

* (アスタリスク): 0回以上の繰り返し

+ (プラス): 1回以上の繰り返し

? (クエスチョン): 0回または1回の繰り返し

{n}: n回の繰り返し

{n,}: n回以上の繰り返し

{n,m}: n回以上m回以下の繰り返し

これらのメタ文字と量指定子を組み合わせることで、複雑なパターンを表現できます。

// 例: 数字が1回以上続くパターン
const regex = /\d+/;

文字列の検索:match()、test()

JavaScriptで正規表現を使って文字列を検索するには、match()メソッドとtest()メソッドを使用します。

const str = 'Hello world';
const regex = /world/;
const result = str.match(regex); // ['world', index: 6, input: 'Hello world', groups: undefined]
const str = 'Hello world';
const regex = /world/;
const result = regex.test(str); // true

文字列の置換:replace()

replace()メソッドは、文字列中の正規表現に一致する部分を、指定した文字列で置換します。

const str = 'Hello world';
const regex = /world/;
const newStr = str.replace(regex, 'JavaScript'); // Hello JavaScript

グローバル検索(/gフラグ)を使用すると、文字列中のすべての該当箇所を置換できます。

const str = 'apple banana apple';
const regex = /apple/g;
const newStr = str.replace(regex, 'orange'); // orange banana orange

また、置換文字列に特殊なパターンを使用することで、より高度な置換が可能です。

const str = 'John Doe';
const regex = /(\w+) (\w+)/;
const newStr = str.replace(regex, '$2, $1'); // Doe, John

正規表現のフラグ:g, i, m

正規表現には、検索や置換の動作を制御するためのフラグがあります。主なフラグは、g(グローバル)、i(大文字・小文字を区別しない)、m(複数行)です。

gフラグ (グローバル): 文字列中のすべての該当箇所を検索または置換します。

iフラグ (大文字・小文字を区別しない): 大文字・小文字を区別せずに検索します。

mフラグ (複数行): 複数行の文字列を対象に、^と$を各行の先頭と末尾として扱います。

const str = 'Hello world\nHELLO WORLD';
const regex = /hello/gi;
const result = str.match(regex); // ['Hello', 'HELLO']

参考リンク

まとめ

この記事では、JavaScriptの正規表現の基本について解説しました。正規表現は、文字列処理において非常に強力なツールであり、Web開発において欠かせない知識です。今回学んだ内容を基礎として、より高度な正規表現のテクニックを習得し、JavaScriptのスキルアップを目指しましょう。