では次のステップとして、初心者向けに少し実用的な正規表現の練習問題を作り、解答とステップごとの解説も用意します。
練習問題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桁の数字-→ 文字通りハイフン^と$→ 文字列全体がこの形式かをチェック
💡 ポイントまとめ
[a-zA-Z]→ アルファベット\d→ 数字+→ 1回以上繰り返す{n}→ n回繰り返す^と$→ 文字列全体を対象にする\w→ 英数字とアンダースコア

