できるかそんなもん(なお検証言語はRuby
できた
/\A(?!\d*\z)[a-z0-9]+\z/i
こうすると
通る
通らない
- ほげ
- hoge
- 123
どうなってんの
キモはおそらく(?!\d*\z)
の部分 最後に説明する
\A
文字列の最初^
は使わないこと[a-z0-9]
a~z 0~9 つまりここが半角英数字を指定している+
直前の文字列の1回以上の繰り返し\z
文字列の最後$
は使わないことi
大文字と小文字区別しない
とここまでで/\A[a-z0-9]+\z/i
が実現できる。つまり半角英数字のみである
つまり(?!\d*\z)
こそが「数字のみは不可」を実現しているのである
否定先読み
見慣れない文字である?!
は否定先読みと呼ばれる正規表現
例えば
/a(?!b)c/
とやった場合
通る
- aaaaac
- ac
- aaccc
通らない
- abc
- abbbccc
と言った感じ
\d
は数字を意味するので数字のみの場合はNGとやっているのである