JavaScript | 正規表現オブジェクト

JavaScript JavaScript
スポンサーリンク

では次のステップとして、初心者向けに少し実用的な正規表現の練習問題を作り、解答とステップごとの解説も用意します。


練習問題1:アルファベットだけかチェック

問題

  • 入力された文字列が アルファベット(A-Z, a-z)だけ で構成されているか確認する正規表現を書こう。

ステップ1:アルファベットの範囲を指定

  • [a-zA-Z] → 小文字と大文字のアルファベットを意味する
/[a-zA-Z]/
JavaScript

ステップ2:文字列全体を対象にする

  • 先頭と末尾を指定して全体チェック:
/^[a-zA-Z]+$/
JavaScript
  • + → 1回以上繰り返す

ステップ3:正規表現でチェック

let regexp = /^[a-zA-Z]+$/;

console.log(regexp.test("Hello"));   // true
console.log(regexp.test("Hello123"));// false
console.log(regexp.test("hello"));   // true
console.log(regexp.test("123"));     // false
JavaScript

解説

  • "Hello" → アルファベットだけなので true
  • "Hello123" → 数字が含まれるので false
  • "hello" → アルファベットだけなので true
  • "123" → アルファベットなしなので false

練習問題2:メールアドレス形式かチェック(簡易版)

問題

  • 「ユーザー名@ドメイン」という形式か簡単に確認する正規表現を書こう

ステップ1:@の前の文字

  • 任意の文字列を \w+ で表す
/^\w+/
JavaScript

ステップ2:@を追加

/^\w+@/
JavaScript

ステップ3:ドメイン部分を追加

  • ドメイン名は [a-zA-Z]+、末尾は .com など
/^\w+@[a-zA-Z]+\.[a-zA-Z]+$/
JavaScript

ステップ4:正規表現でチェック

let regexp = /^\w+@[a-zA-Z]+\.[a-zA-Z]+$/;

console.log(regexp.test("test@example.com")); // true
console.log(regexp.test("user123@domain.net")); // true
console.log(regexp.test("user@domain"));       // false
console.log(regexp.test("user@domain@com"));   // false
JavaScript

解説

  • \w+ → 英数字・アンダースコア1文字以上
  • @ → 文字通り @
  • [a-zA-Z]+ → 英字1文字以上
  • \. → ドット(. は正規表現で特別な文字なのでエスケープ)
  • $ → 文字列末尾

※本格的なメールチェックはもっと複雑ですが、初心者向けの簡易確認用です。


練習問題3:電話番号形式(例:090-1234-5678)かチェック

問題

  • 「3桁-4桁-4桁」の数字形式かチェックする正規表現を書こう

ステップ1:3桁の数字

/^\d{3}/
JavaScript

ステップ2:ハイフンと4桁を追加

/^\d{3}-\d{4}-\d{4}$/
JavaScript

ステップ3:正規表現でチェック

let regexp = /^\d{3}-\d{4}-\d{4}$/;

console.log(regexp.test("090-1234-5678")); // true
console.log(regexp.test("080-4321-876"));  // false
console.log(regexp.test("09012345678"));   // false
console.log(regexp.test("090-1234-567A")); // false
JavaScript

解説

  • \d{3} → 3桁の数字
  • \d{4} → 4桁の数字
  • - → 文字通りハイフン
  • ^$ → 文字列全体がこの形式かをチェック

💡 ポイントまとめ

  1. [a-zA-Z] → アルファベット
  2. \d → 数字
  3. + → 1回以上繰り返す
  4. {n} → n回繰り返す
  5. ^$ → 文字列全体を対象にする
  6. \w → 英数字とアンダースコア
タイトルとURLをコピーしました