整数-9999~9999の正規表現 ^[\-]?[0-9]{1,4}$
正規表現:RegexクラスのIsMatchメソッドを使って、正負整数かつ5の倍数をチェックするプログラムを作成します。
次のサンプルプログラム内の Regex.IsMatch(TextBox1.Text, "^[\-]?[0-9]{1,4}$") の
正規表現 ^[\-]?[0-9]{1,4}$ について分かりやすく表現すると、
^:TextBox1.Textの先頭文字から
[\-]?:1文字目に-があってもなくてもよく(\はエスケープ文字)
[0-9]:次から半角の0から9の数字が
{1,4}:1桁~4桁で
$:最後まで連続している
となります。つまり、-9999~9999の整数を表現しています。これ以外の文字列は不一致となります。
サンプルプログラムでは、-9999~9999の整数チェックをした後に、If文-500以上2000以下のチェックと、Modで5で割った余りが0のチェックをして、入力文字列がいずれの条件を満たしていれば、5の倍数とします。
サンプルプログラム
入力した文字列が、-500から2000の整数かつ5の倍数であるか否かをチェックします。
サンプルプログラムでは、入力値の前後の空白はTrim関数で事前に取り除いています。
コントロール | プロパティ | 設定値 |
---|---|---|
TextBox1 | TextAlign | Right |
BtnCheck | Text | チェック |
StatusBar1 | Text | ー |
Imports System.Text.RegularExpressions Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " '自動生成部分省略 #End Region '------------------------------------------------------------ ' チェックボタンクリック処理 '------------------------------------------------------------ Private Sub btnCheck_Click _ (ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnCheck.Click ' 前後の空白除去 TextBox1.Text = Trim(TextBox1.Text) ' ","を削除 TextBox1.Text = TextBox1.Text.Replace(",", "") ' 4桁以内の整数(-9999~9999)チェック If Regex.IsMatch(TextBox1.Text, "^[\-]?[0-9]{1,4}$") Then ' 指定範囲内の文字が入力された否かのチェック Dim toInt As Integer toInt = CInt(TextBox1.Text) If toInt >= -500 And toInt <= 2000 And toInt Mod 5 = 0 Then ' 正常:指定範囲(-500~2000)内の5の倍数 ' 3桁ごとに","編集 TextBox1.Text = Format(toInt, "#,##0") '正常メッセージの表示 StatusBar1.Text = TextBox1.Text.ToString + _ "は5の倍数です" Else ' エラー:指定範囲外の値か5の倍数でない ' エラーメッセージの表示 MessageBox.Show _ ("-500~2000の5の倍数を入力してください", "エラー") End If Else ' エラー:指定範囲外の文字が入力された時 ' エラーメッセージの表示 StatusBar1.Text = "" MessageBox.Show _ ("-500~2000の5の倍数を入力してください", "エラー") End If ' フォーカス設定 TextBox1.Focus() End Sub End Class