次の方法で共有


Visual Basic での MaskedTextBox コントロールでの正規表現の使用

この例では、単純な正規表現を変換して MaskedTextBox コントロールを操作する方法を示します。

マスク言語の説明

標準的な MaskedTextBox マスク言語は、Visual Basic 6.0 の Masked Edit コントロールで使用される言語に基づいており、そのプラットフォームから移行するユーザーにはなじみのあるものにする必要があります。

MaskedTextBox コントロールの Mask プロパティは、使用する入力マスクを指定します。 マスクは、次の表の 1 つ以上のマスク要素で構成される文字列である必要があります。

マスク要素 説明 正規表現要素
0 0 ~ 9 の任意の 1 桁。 エントリが必要です。 \d
9 数字またはスペース。 エントリは省略可能です。 [ \d]?
# 数字またはスペース。 エントリは省略可能です。 この位置がマスク内で空白のままにされている場合は、スペースとしてレンダリングされます。 プラス (+) およびマイナス (-) 記号を使用できます。 [ \d+-]?
L ASCII 文字。 エントリが必要です。 [a-zA-Z]
? ASCII 文字。 エントリは省略可能です。 [a-zA-Z]?
および 文字。 エントリが必要です。 [\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}]
C 文字。 エントリは省略可能です。 [\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}]?
ある 英数字。 エントリは省略可能です。 \W
. カルチャに適した 10 進プレースホルダー。 未提供
, カルチャに適した数千のプレースホルダー。 未提供
: カルチャに適した時刻区切り記号。 未提供
/ カルチャに適した日付区切り記号。 未提供
$ カルチャに適した通貨記号。 未提供
< 後に続くすべての文字を小文字に変換します。 未提供
> 後に続くすべての文字を大文字に変換します。 未提供
| 前のシフトを元に戻すか、下にシフトします。 未提供
\ マスク文字をエスケープし、リテラルに変換します。 "\\" は円記号のエスケープ シーケンスです。 \
その他すべての文字。 リテラル。 マスクされていない要素はすべて、 MaskedTextBox内でそれ自体として表示されます。 その他すべての文字。

10 進数 (.)、1000 番目 (,)、時刻 (:)、日付 (/)、通貨 ($) の記号は、アプリケーションのカルチャで定義されている記号を既定で表示します。 FormatProvider プロパティを使用して、別のカルチャのシンボルを強制的に表示することができます。

正規表現とマスク

正規表現とマスクを使用してユーザー入力を検証することはできますが、完全には同等ではありません。 正規表現はマスクよりも複雑なパターンを表現できますが、マスクは同じ情報をより簡潔かつ文化的に関連する形式で表現できます。

次の表では、4 つの正規表現と、それぞれの同等のマスクを比較します。

正規表現 マスク 注記
\d{2}/\d{2}/\d{4} 00/00/0000 マスク内の / 文字は論理日付区切り記号であり、アプリケーションの現在のカルチャに適した日付区切り記号としてユーザーに表示されます。
\d{2}-[A-Z][a-z]{2}-\d{4} 00->L<LL-0000 米国形式の日付 (日、月の省略形、年) で、3 文字の月の省略形が最初の大文字と小文字 2 文字で表示されます。
(\(\d{3}\)-)?\d{3}-d{4} (999)-000-0000 米国の電話番号、市域コード (省略可能)。 ユーザーが省略可能な文字を入力しない場合は、スペースを入力するか、最初の 0 で表されるマスク内の位置にマウス ポインターを直接配置できます。
$\d{6}.00 $999,999.00 0 ~ 999999の範囲の通貨値。 通貨、1000 番目、および 10 進数の文字は、実行時にカルチャ固有の文字に置き換えられます。

こちらも参照ください