IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

Javascriptの正規表現を学ぼう!様々なパターンの使い方をわかりやすく解説

JavaScriptの正規表現を使いこなすと、文字列操作の可能性が大きく広がります。記事では、正規表現の基本的な構文から、特殊文字の使用法、エスケープの必要性まで、詳しく解説します。

例も交えながら、正規表現の実践的な活用方法を学んでいただけます。正規表現は複雑に見えるかもしれませんが、1つずつ理解していけば、強力な武器となります。

本記事を通じて、正規表現のスキルを向上させ、より効率的なコーディングを目指しましょう。

JavaScriptの正規表現とは?

正規表現は、特定のルールにしたがって記述された文字列のパターンで、パターンと合う文字列を検索・置換する目的で使用できます。例えば、メールアドレスの形式チェックや、特定の単語を含む文章の検索などに活用できます。

正規表現の基本的な構文は、スラッシュ(/)で囲まれた文字列です。例えば、/pattern/のような形式で記述します。

正規表現を使うメリットは、コードの簡潔さと処理の高速性です。複雑な文字列操作も、数行のコードで実現できるため、開発効率が大幅に向上します。また、正規表現エンジンは最適化されているため、大量のデータを扱う場合でも高速に処理できます。

ただし、正規表現は強力な一方で、複雑なパターンを記述する際には注意が必要です。誤った使用は予期せぬ結果を招く可能性があるため、適切な知識と経験が求められます。

正規表現のパターンについて

正規表現パターンには、普通の文字だけでなく、特別な働きをする文字も指定できます。

一致させる対象別に、パターン文字の記述方法を見ていきましょう。

一致する文字を探したい場合

文字列の中から特定の文字や文字列を探す場合、いくつかの方法があります。

本項でご紹介する方法を組み合わせることで、より複雑なパターンを作成できます。

そのままの文字列に一致

基本は、そのままの文字列を正規表現パターンとして使用できます。

const regex = /hello/;  // 正規表現オブジェクトを変数「regex」に代入

console.log(regex.test(“hello world”)); // 結果はtrue

console.log(regex.test(“Hello World”)); // false(大文字小文字は区別される)

正規表現オブジェクトのメソッドtest()は、指定文字列に対して正規表現が適合するか判定します。

上記のコードでは、「hello」が文字列に含まれていればマッチします。

いずれかの文字に一致

文字クラス([…])を使うと、指定した文字のいずれかに一致する文字を探すことができます。

const regex = /[abc]/; // a, b, cのいずれかに一致

console.log(regex.test(“apple”)); // true

console.log(regex.test(“banana”)); // true

console.log(regex.test(“cherry”)); // true

console.log(regex.test(“date”)); // false

繰り返し回数に一致

量指定子(*, +, ?, {n}, {n,m})を使うと、パターンの繰り返し回数を指定できます。

const regex1 = /a*/; // aが0回以上

const regex2 = /a+/; // aが1回以上

const regex3 = /a?/; // aが0回または1回

const regex4 = /a{3}/; // aが3回

const regex5 = /a{2,4}/; // aが2回以上4回以下

 

console.log(regex1.test(“”)); // true

console.log(regex2.test(“a”)); // true

console.log(regex3.test(“aa”)); // true

console.log(regex4.test(“aaa”)); // true

console.log(regex5.test(“aaa”)); // true

先頭や末尾に一致

アンカー(^, $)を使うと、文字列の先頭や末尾に一致するパターンを指定できます。

const regex1 = /^Hello/; // 文字列の先頭がHelloに一致

const regex2 = /World!$/; // 文字列の末尾がWorldに一致

 

console.log(regex1.test(“Hello, World!”)); // true

console.log(regex2.test(“Hello, World!”)); // true

console.log(regex1.test(“Say Hello”)); // false

console.log(regex2.test(“World of JavaScript”)); // false

特殊文字を使う場合

特殊文字を使うと、より柔軟なパターンマッチングが可能になります。

正規表現は便利な反面、複雑になりすぎると可読性が低下するので、使いすぎには注意してください。

メタ文字の使用法

メタ文字(., \w, \d, \s)は、特定の文字クラス(文字種)にマッチします。

const regex1 = /./; // 任意の1文字に一致

const regex2 = /\w/; // 英数字またはアンダースコアに一致

const regex3 = /\d/; // 数字に一致

const regex4 = /\s/; // 空白文字に一致

 

console.log(regex1.test(“a”)); // true

console.log(regex2.test(“_”)); // true

console.log(regex3.test(“5”)); // true

console.log(regex4.test(” “)); // true

否定文字クラスの使用法

否定文字クラス([^…])を使うと、指定した文字以外の文字に一致します。

const regex = /[^abc]/; // a, b, c以外の文字に一致

 

console.log(regex.test(“d”)); // true

console.log(regex.test(“e”)); // true

console.log(regex.test(“a”)); // false

OR条件の使用法

OR条件(|)を使うと、複数のパターンのいずれかに一致するかを確認できます。

const regex = /cat|dog/; // catまたはdogに一致

 

console.log(regex.test(“I have a cat”)); // true

console.log(regex.test(“I have a dog”)); // true

console.log(regex.test(“I have a bird”)); // false

正規表現の「エスケープ」とは?

正規表現では、ピリオド(.)やアスタリスク(*)などの文字に特別な意味があるため、これらの文字を文字通りに使いたい場合は、特別な意味を外すため、エスケープ記法が必要になります。

エスケープの方法は簡単で、特殊文字の前にバックスラッシュ(\)を付けるだけです。

以下に、エスケープが必要な代表的な特殊文字をいくつか紹介します。

種別

特殊文字の例

文字クラス

.

量指定子

*, +, ?

アンカー

^, $

括弧

(, ), [, ], {, }

斜線

\, /

上記の文字を文字通りに使用したい場合は、必ずエスケープする必要があります。

なお、スラッシュ(/)のエスケープが必要なのは、正規表現を /pattern/ のような形(正規表現リテラル)で書く場合のみです。

let regex = /http:\/\/example\.com/; // スラッシュをエスケープ

一方、RegExpコンストラクタを使用して正規表現を作成する場合は、スラッシュをエスケープする必要はありません。

let regex = new RegExp(“http://example\\.com”); // スラッシュはエスケープ不要

エスケープの具体例

let regex1 = /h.t/;     // ピリオドをエスケープしない場合

console.log(regex1.test(“hot”)); // true

console.log(regex1.test(“h.t”)); // true

 

let regex2 = /h\.t/;    // ピリオドをエスケープする場合

console.log(regex2.test(“hot”)); // false

console.log(regex2.test(“h.t”)); // true

上記の例では、エスケープしないピリオド(.)は任意の1文字にマッチしますが、エスケープしたピリオドは文字通りのピリオドにのみマッチします。

特殊文字を使う際にはエスケープが必要か常に注意を払いましょう。

また、正規表現をテストするツールを使用して、意図した通りにマッチングがおこなわれるか確認をおすすめします。

まとめ

JavaScriptの正規表現は、文字列操作を簡潔かつ高速におこなえる便利な機能です。パターンの基本から応用まで理解すると、複雑な文字列処理も効率的に実装できます。

本記事記事を参考に、実際にコードを書いて正規表現の活用を始めてみましょう。