簡単な正規表現の復習のために、問題を作ってみました。

Webエンジニアの雄大です。

前も少し、正規表現を取り上げたのですが、
http://yudai-stadium.com/blog/?p=134

正規表現のおさらいとして、問題を考えてみました。

次のパターンに文字列がマッチするか、○か×か

(1)
パターン:[012]{3}
文字列:111

(2)
パターン:[012]{3}
文字列:1111

(3)
パターン:[012]{3}
文字列:012

(4)
パターン:[012]{3}
文字列:12

(5)
パターン:[012]{3}
文字列:013

(6)
パターン:[012]{3}
文字列:1113

 

答え
(1)○
(2)○
(3)○
(4)×
(5)×
(6)○

 

解説
2番と6番がひっかけ。
あくまでも、マッチしていればいいので、
(2)で文字列が1111となっていても、1111の中の111がマッチしているので、○となる。

 

追加問題で、(2)や(6)で3桁だけにする。
つまり11や1111などの2桁や4桁は排除するにはどうすればいいか。

答えは
^[012]{3}$
^[012][012][012]$
^[0-2][0-2][0-2]$
のいずれかにする。

確認のソース
http://yudai-stadium.com/learnsecurity/preg2.php

コメント