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