
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']
参考リンク
- RegExp – JavaScript | MDN
- String.prototype.match() – JavaScript | MDN
- String.prototype.replace() – JavaScript | MDN
まとめ
この記事では、JavaScriptの正規表現の基本について解説しました。正規表現は、文字列処理において非常に強力なツールであり、Web開発において欠かせない知識です。今回学んだ内容を基礎として、より高度な正規表現のテクニックを習得し、JavaScriptのスキルアップを目指しましょう。