実数 -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の実数を表現しています。これ以外の文字列は不一致となります。
サンプルプログラム
入力した文字列が、-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