RegularExpressionValidatorの使い方
● RegularExpressionValidatorをテストするサンプル

図 RegularExpressionValidatorをテストするサンプル
このサンプルは、RegularExpressionValidatorコントロールをテストします。Validation ExpressionのDropDownListには、メールアドレス、パスワード、ホームページのURLなどの形式をチェックす Validation Expressionが格納されています。DropDownListからアイテムを選択すると、TextBoxにValidation Expressionが表示されます。たとえば、郵便番号を選択すると(\d{3})-(\d{4})のようなValidation Expressionが表示されます。Test DataのTextBoxには、テストデータを入力します。テストボタンをクリックすると、テストデータの形式がチェックされて結果が表示されます。
このサンプルでは、以下のノウハウを習得することができます。
▲ RegularExpressionValidatorコントロールの使い方
▲ RegularExpressionValidator のValidationExpressionプロパティをランタイム時に設定する方法
▲ RegularExpressionValidator のValidate()メソッドの使い方
▲ PageクラスのIsValidプロパティの使い方
▲ メールアドレス、パスワード、URL、郵便番号、電話番号の形式をチェックする書式(Regular Expression)
サンプルの行35-48では、DropDownListにRegularExpressionValidatorのValidation Expressionを定義しています。ListItemのTextプロパティには、Validation Expressionの種類を設定しています。Valueプロパティには、Validation Expressionを設定しています。行36では、OnSelectedIndexChangedイベントを登録しています。このイベントは、DropDownListからアイテムを選択すると発生します。行38では、AutoPostBackプロパティにTrueを設定してアイテムを選択したときにポストバックされるようにしています。
35: <asp:DropDownList id="dropValidationExpression"
runat="server"
36:
OnSelectedIndexChanged="dropValidationExpression_SelectedIndexChanged"
38:
AutoPostBack="True">
39:
<asp:ListItem Text="Validation Expressionを選択してください!"
Value="" />
40: <asp:ListItem Text="メールアドレスの形式 (test@hotmail.com)"
Value="\S+@\S+\.\S{2,3}" />
:::
47: <asp:ListItem Text="時間の形式 (8am, 8 am, 8:00 am, 8:00am)" ::: />
48:
</asp:DropDownList>
DropDownListのOnSelectedIndexChangedイベントでは、SelectedItem.Valueプロパティに格納されている値をValidation ExpressionのTextBoxのTextプロパティに設定しています。SelectedItem.Valueプロパティには、DropDownListから選択したアイテムのValidation Expressionが格納されています。
11: Sub
dropValidationExpression_SelectedIndexChanged(s As Object, e As EventArgs)
12: txtValidationExpression.Text =
dropValidationExpression.SelectedItem.Value
13: End Sub
行53-54では、DropDownListから選択したValidation Expressionを表示するTextBoxを定義しています。このTextBoxに表示されたValidation Expressionは、上書きすることができます。行66-67では、Test DataのTextBoxを定義しています。
53: <asp:TextBox id="txtValidationExpression"
runat="server"
54:
Width="300px" />
::::
66: <asp:TextBox
id="txtTestData" runat="server"
67:
Width="300px" />
行76-78では、テストボタンを定義しています。テストボタンにはOnClickイベントを登録しています。このイベントでは、テストデータをチェックして結果を表示します。行80-84では、RegularExpressionValidatorを定義しています。行81では、EnableClientScriptプロパティにFalseを設定していWebサーバ側でエラーチェックするようにしています。行82では、ControlToValidateプロパティにTest DataのTextBoxのIDを設定しています。ControlToValidateには、エラーチェックの対象となるコントロールのIDを設定します。行84では、Textプロパティにエラーメッセージを設定しています。RegularExpressionValidatorのValidationExpressionプロパティには、ランタイム時にDropDownListから選択したValidation Expressionを設定します。
テストボタンをクリックするとページがポストバックされてPage_Load(), OnClick()イベントの順に制御が渡ります。
76: <asp:Button id="btnSubmit"
runat="server"
77: OnClick="btnSubmit_Click"
78: Text="テスト" />
::::
80: <asp:RegularExpressionValidator
id="valRegularExpression" runat="server"
81:
EnableClientScript="False"
82:
ControlToValidate="txtTestData"
83: Display="Dynamic"
84: Text="<hr>NG - テストデータが不正です!" />
Page_Load()イベントでは、RegularExpressionValidatorのValidationExpressionプロパティにValidation ExpressionのTextBoxのTextプロパティを設定しています。TextBoxのTextプロパティには、DropDownListから選択したValidation Expressionが格納されています。
4: Sub Page_Load()
5: lblMessage.Text = String.Empty
6: If IsPostBack Then
7:
valRegularExpression.ValidationExpression = txtValidationExpression.Text
8: End If
9: End Sub
OnClick()イベントでは、RegularExpressionValidatorのValidate()メソッドでテストデータをチェックしています。PageクラスのIsValidプロパティでは、エラーの有無を調べてエラーが無いときは、LabelのTextプロパティに「OK」を設定して表示しています。
15: Sub btnSubmit_Click(s As Object, e As EventArgs)
16: valRegularExpression.Validate()
17: If IsValid Then
18: lblMessage.Text =
"<hr>OK"
19: End If
20: End Sub