正規表現 0以上整数チェック [VB.NET]

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

整数 0~9999の正規表現 ^[0-9]{1,4}$

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

次のサンプルプログラム内の正規表現^[0-9]{1,4}$について分かりやすく表現すると、

^:文字列の先頭文字から

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

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

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

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

たとえば、最後の $ がない^[0-9]{1,4} は、123abcのように数字の後に何がついてもOKになってしまいます。また、1234567のように、5桁以上の数字でもOKになります。

サンプルプログラム

VB.NET

入力した文字列が0以上の整数かつ9999以下の整数であるか否かのチェックをするプログラムを作成します。

サンプルプログラムでは、入力値の前後の空白はTrim関数で事前に取り除き、さらに、3桁ごとの区切り文字","もReplace関数で取り除いています。

正規表現実行例
コントロール プロパティ 設定値
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(",", "")

        ' 0~9999の整数チェック
        If Regex.IsMatch(TextBox1.Text, "^[0-9]{1,4}$") Then
            ' 正常:指定範囲内の文字が入力された時
            ' 3桁ごとに","編集
            TextBox1.Text = Format(CInt(TextBox1.Text), "#,##0")
            ' 正常メッセージの表示
            StatusBar1.Text = _
                TextBox1.Text.ToString & "が入力されました"
        Else
            ' エラー:指定範囲外の文字が入力された時
            ' エラーメッセージの表示
            MessageBox.Show _
                ("0~9999の整数を入力してください", "エラー")
        End If

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

    End Sub

End Class