此範例示範如何轉換簡單的正則表達式以使用 MaskedTextBox 控件。
遮罩語言的描述
標準 MaskedTextBox 遮罩語言是根據 Visual Basic 6.0 控制項所使用的 Masked Edit 遮罩語言制定,並應該使從該平台遷移的使用者感到熟悉。
控件 Mask 的 MaskedTextBox 屬性會指定要使用的輸入掩碼。 遮罩必須是由下表中一或多個遮罩元素所組成的字串。
| 遮罩元素 | 說明 | 正則表達式元素 |
|---|---|---|
| 0 | 介於 0 到 9 之間的任何單一數位。 需要進入 | \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 |
| . | 適合文化的小數符號。 | 不可用 |
| , | 具有文化適當性的千分位符。 | 不可用 |
| : | 適合文化的時間分隔符號。 | 不可用 |
| / | 符合文化適用的日期分隔符號。 | 不可用 |
| $ | 文化特性適當的貨幣符號。 | 不可用 |
| < | 將後面的所有字元轉換成小寫。 | 不可用 |
| > | 將後面的所有字元轉換成大寫。 | 不可用 |
| | | 復原先前的上移或下移。 | 不可用 |
| \ | 跳脫掩碼字元,將它轉換成原義字元。 “\\” 是反斜杠的逸出序列。 | \ |
| 所有其他字元。 | 常值。 所有非遮罩元素都會在MaskedTextBox中顯示為本身。 | 所有其他字元。 |
十進位 (.)、千分之一 (,)、時間 (:)、date (/) 和貨幣 ($) 符號預設為顯示應用程式文化特性所定義的這些符號。 您可以使用 FormatProvider 屬性,強制它們顯示另一個文化的符號。
正則表達式和掩碼
雖然您可以使用正則表示式和遮罩來驗證用戶輸入,但它們並不完全相等。 正則表達式可以表達出比遮罩更複雜的模式,但遮罩能以更簡潔且文化相關的格式表達相同的資訊。
下表比較四個正則式及其對應的遮罩。
| 正則表達式 | 面具 | 註釋 |
|---|---|---|
\d{2}/\d{2}/\d{4} |
00/00/0000 |
/遮罩中的字元是表示邏輯日期分隔符,且將根據應用程式的當前文化特性以適當的日期分隔符顯示給用戶。 |
\d{2}-[A-Z][a-z]{2}-\d{4} |
00->L<LL-0000 |
以美國格式顯示三個字母月份縮寫的日期(日、月縮寫和年),其開頭大寫字母後面接著兩個小寫字母。 |
(\(\d{3}\)-)?\d{3}-d{4} |
(999)-000-0000 |
美國電話號碼,分區代碼選擇性。 如果使用者不想輸入選擇性字元,他們可以輸入空格,或直接將滑鼠指標放在遮罩中由第一個'0'代表的位置。 |
$\d{6}.00 |
$999,999.00 |
介於 0 到 999999 範圍內的貨幣值。 貨幣、千分位符號和小數點字元將在執行期間替換為其文化專屬的對應字元。 |