トップ回答者
正規表現 〇月、〇月~×月など

質問
-
入力された文字を正規表現でチェックしたいと考えています。
環境は以下の通りです。
選択した内容にしたがって、文字列を月分をしめす文字列をつくっています。
Visual Studio 2005
.Net VB許可される形式として
①〇月
②〇月~×月
③〇月・×月
があります。
以下のようなコードで試してみたのですが、②が正しく判断できませんでした。Dim str As String = "1月" Dim bool As Boolean = False bool = System.Text.RegularExpressions.Regex.IsMatch(str, "^[1-12]月") Console.WriteLine(bool.ToString & "|" & str) str = "aaa1月" bool = System.Text.RegularExpressions.Regex.IsMatch(str, "^[1-12]月$") Console.WriteLine(bool.ToString & "|" & str) str = "1月~3月" bool = System.Text.RegularExpressions.Regex.IsMatch(str, "^[1-12]月~[1-12]月$") Console.WriteLine(bool.ToString & "|" & str) str = "1月~3月qqq" bool = System.Text.RegularExpressions.Regex.IsMatch(str, "^[1-12]月~[1-12]月$") Console.WriteLine(bool.ToString & "|" & str) str = "1月~qqq3月" bool = System.Text.RegularExpressions.Regex.IsMatch(str, "^[1-12]月~[1-12]月$") Console.WriteLine(bool.ToString & "|" & str) str = "1月・2月" bool = System.Text.RegularExpressions.Regex.IsMatch(str, "^[1-12]月・[1-12]月$") Console.WriteLine(bool.ToString & "|" & str) str = "1月・2月aaaaaa" bool = System.Text.RegularExpressions.Regex.IsMatch(str, "^[1-12]月・[1-12]月$") Console.WriteLine(bool.ToString & "|" & str) str = "1月aa・2月" bool = System.Text.RegularExpressions.Regex.IsMatch(str, "^[1-12]月・[1-12]月$") Console.WriteLine(bool.ToString & "|" & str)
結果
True|1月 False|aaa1月 False|1月~3月 False|1月~3月qqq False|1月~qqq3月 True|1月・2月 False|1月・2月aaaaaa False|1月aa・2月
③も間違うならば、そもそも文法などの認識が間違っているのか、など考えるのですが、差がよくわかりません。
②は「月~」③は「月・」で同じケースだと思うのですが。以上です。よろしくお願いいたします。