正規表現 整数かつ5の倍数チェック [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

整数-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の倍数とします。

サンプルプログラム

VB.NET

入力した文字列が、-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