正規表現 正負実数チェック [VB.NET]

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

実数 -999.99~999.99の正規表現 ^[+\-]?[0-9]{1,3}\.[0-9]{1,2}$

正規表現:RegexクラスのIsMatchメソッドを使って、正負実数のエラーをチェックするプログラムを作成します。

次のサンプルプログラム内の Regex.IsMatch(TextBox1.Text, "^[+\-]?[0-9]{1,3}\.[0-9]{1,2}$") について説明します。

"^[+\-]?[0-9]{1,3}\.[0-9]{1,2}$が正規表現で、第1パラメータの文字列が、第2パラメータの正規表現文字列に一致すればTrueを、不一致ならばFalseを返します。

正規表現 "^[+\-]?[0-9]{1,3}\.[0-9]{1,2}$ について分かりやすく表現すると、

^:TextBox1.Textの先頭文字から

[+\-]?:1文字目に+または-があってもなくてもよく(\はエスケープ文字)

[0-9]:次から半角の0から9の数字が

{1,3}:1桁~3桁で

¥.:次にピリオドが続き(\はエスケープ文字)

[0-9]:次の文字から半角の0から9の数字が

{1,2}:1桁~2桁で

$:最後まで連続している

となります。つまり、-999.99~999.99の実数を表現しています。これ以外の文字列は不一致となります。

サンプルプログラム

VB.NET

入力した文字列が、-999.99から999.99までの実数(小数点以下2桁まで)であるか否かのチェックをするプログラムを作成します。

プログラムでは、-999.99~999.99の実数チェックと、-999~999の整数チェックをします。入力文字列がいずれかに一致すればOKとします。

入力値の前後の空白は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)

    ' (1) -999.99から999.99までの実数チェック
    ' (2) -999から999までの整数チェック
    If Regex.IsMatch _
      (TextBox1.Text, "^[+\-]?[0-9]{1,3}\.[0-9]{1,2}$") _
      Or Regex.IsMatch(TextBox1.Text, "^[+\-]?[0-9]{1,3}$") Then
        ' 正常:指定範囲内の文字が入力された時
        ' 正常メッセージの表示
        StatusBar1.Text = _
          TextBox1.Text.ToString & "が入力されました"
    Else
        ' エラー:指定範囲内の文字が入力された時
        ' エラーメッセージの表示
        StatusBar1.Text = ""
        MessageBox.Show _
          ("-999.99~999.99の実数を入力してください", "エラー")
    End If

    ' フォーカス設定
    TextBox1.Focus()

  End Sub

End Class