JavaScriptの正規表現文法

JavaScriptの正規表現文法

JavaScriptの正規表現とは

正規表現(RegExp)は、文字列パターンの検索や置換を効率的に行うための強力なツールです。JavaScriptでは、RegExpオブジェクトを使用して正規表現を操作します。また、文字列メソッドと組み合わせて正規表現を活用できます。

たとえば、以下のように正規表現を使用します:

// 正規表現を使った検索
const pattern = /hello/;
console.log(pattern.test('hello world')); // true

正規表現の基本構文

正規表現はスラッシュ(/)で囲まれた形式で定義されます。基本的な構文は以下の通りです:

  • .: 任意の1文字
  • ^: 行の先頭
  • $: 行の末尾
  • \: エスケープ

例:

// 行の先頭が "A" の場合
const pattern = /^A/;
console.log(pattern.test('Apple')); // true

フラグの種類と使い方

正規表現には以下のフラグがあります:

  • g: グローバル検索
  • i: 大文字小文字を区別しない
  • m: 複数行検索
  • s: ドット(.)が改行にもマッチ
  • u: Unicode対応
  • y: スティッキーモード

例:

// 大文字小文字を区別しない検索
const pattern = /hello/i;
console.log(pattern.test('Hello world')); // true

量指定子と繰り返し

量指定子を使うことで、文字の繰り返しを表現できます:

  • *: 0回以上の繰り返し
  • +: 1回以上の繰り返し
  • ?: 0回または1回
  • {n}: 正確にn回の繰り返し
  • {n,}: n回以上の繰り返し
  • {n,m}: n回以上m回以下の繰り返し

例:

// "o" が2回以上続く文字列
const pattern = /o{2,}/;
console.log(pattern.test('food')); // true

文字クラス

文字クラスを使うと、特定の文字セットにマッチさせることができます:

  • [abc]: “a”, “b”, “c” のいずれか
  • [^abc]: “a”, “b”, “c” 以外
  • \d: 数字([0-9])
  • \D: 数字以外
  • \w: 単語文字([a-zA-Z0-9_])
  • \W: 単語文字以外
  • \s: 空白文字
  • \S: 空白文字以外

例:

// 数字を含むかどうかを確認
const pattern = /\d/;
console.log(pattern.test('abc123')); // true

グループ化と参照

丸括弧(())を使うと、部分文字列をグループ化できます。また、キャプチャしたグループを参照することも可能です。

例:

// キャプチャグループを使った置換
const pattern = /(hello) (world)/;
const result = 'hello world'.replace(pattern, '$2 $1');
console.log(result); // "world hello"

特殊文字とエスケープ

正規表現には特殊文字があり、それらをエスケープする必要がある場合があります:

  • \.: ドット
  • \*: アスタリスク
  • \?: クエスチョンマーク
  • \(): 丸括弧
  • \[]: 角括弧
  • \+: プラス

例:

// ドットを検索
const pattern = /\./;
console.log(pattern.test('example.com')); // true

応用例

正規表現を使用した実践的な例をいくつか紹介します。

メールアドレスの検証

const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(pattern.test('test@example.com')); // true

電話番号のフォーマットチェック

const pattern = /^\d{3}-\d{4}-\d{4}$/;
console.log(pattern.test('090-1234-5678')); // true

URLの検証

const pattern = /^(https?:\/\/)?(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$/;
console.log(pattern.test('https://example.com')); // true

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です