メインコンテンツへ
アルゴリズムとプログラミングプログラム言語

正規表現のパターン `^[a-zA-Z][a-zA-Z0-9_]{2,9}$` にマッチする文字列として正しいものはどれか。

ア.1abc(先頭が数字)
イ.ab(全体が3文字未満)
ウ.User_123(8文字、先頭が英字、以降が英数字・アンダースコア)正解
エ.abcdefghijk(11文字で上限オーバー)

解説

正規表現は「文字列の設計図」。`^`はスタート地点、`$`はゴール地点。`[a-zA-Z]`は英字1文字のゲート、`{2,9}`はその後の文字数のルール。パターンを読み解けばどの文字列が通過できるか一目でわかる。

なぜ ウ が正解か

パターン分解: `^`=文字列の先頭、`[a-zA-Z]`=英字(大文字・小文字)1文字、`[a-zA-Z0-9_]{2,9}`=英数字またはアンダースコアが2〜9文字、`$`=文字列の末尾。つまり「先頭が英字1文字、続いて英数字かアンダースコアが2〜9文字、合計3〜10文字」がマッチ条件。`User_123`は先頭U(英字)+ser_123(英数字・アンダースコア7文字)=合計8文字でマッチする。

なぜ ア は間違いか

`1abc`は先頭が数字`1`。パターンの`[a-zA-Z]`(英字のみ)に合致しないため不一致。

なぜ イ は間違いか

`ab`は合計2文字。先頭`a`が英字1文字で残り`b`の1文字は`{2,9}`の最低値2文字を満たさないため不一致。

なぜ エ は間違いか

`abcdefghijk`は11文字。先頭`a`の1文字を引くと残り10文字となり、`{2,9}`の上限9を超えるため不一致。

出典: AI生成問題(学習用)