更新:2007 年 11 月
此示例演示如何转换简单的正则表达式,以便与 MaskedTextBox 控件一起使用。
掩码语言的说明
标准的 MaskedTextBox 掩码语言基于 Visual Basic 6.0 中的 Masked Edit 控件使用的掩码语言,从该平台迁移的用户应该熟悉这一语言。
MaskedTextBox 控件的 Mask 属性指定要使用的输入掩码。掩码必须是由下表中的一个或多个掩码元素组成的字符串。
| 掩码元素 | 说明 | 正则表达式元素 | 
|---|---|---|
| 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}]? | 
| A | 字母数字。可选项。 | \W | 
| . | 相应于区域性的小数点占位符。 | 不可用。 | 
| , | 相应于区域性的千分位占位符。 | 不可用。 | 
| : | 相应于区域性的时间分隔符。 | 不可用。 | 
| / | 相应于区域性的日期分隔符。 | 不可用。 | 
| $ | 相应于区域性的货币符号。 | 不可用。 | 
| < | 将后面的所有字符转换为小写。 | 不可用。 | 
| > | 将后面的所有字符转换为大写。 | 不可用。 | 
| | | 停止前面的大写转换或小写转换。 | 不可用。 | 
| \ | 对掩码字符进行转义,将它转换为原义字符。“\\”是反斜杠的转义序列。 | \ | 
| 所有其他字符。 | 原义字符。所有非掩码元素将在 MaskedTextBox 中以原样显示。 | 所有其他字符。 | 
默认情况下,小数点 (.)、千分位 (,)、时间 (:)、日期 (/) 和货币 ($) 符号按应用程序的区域性定义显示。可使用 FormatProvider 属性强制它们显示为其他区域性的符号。
正则表达式和掩码
虽然正则表达式和掩码都可以用来验证用户输入,但它们并不完全相同。与掩码相比,正则表达式可以表达更复杂的模式,但掩码可以更简洁地采用与区域相关的格式来表达相同的信息。
下表将四个正则表达式与它们的等效掩码进行比较。
| 正则表达式 | 掩码 | 说明 | 
|---|---|---|
| \d{2}/\d{2}/\d{4} | 00/00/0000 | 掩码中的 / 字符是逻辑日期分隔符,它按应用程序的当前区域性设置向用户显示相应的日期分隔符。 | 
| \d{2}-[A-Z][a-z]{2}-\d{4} | 00->L<LL-0000 | 美国格式的日期(日, 月份缩写, 年),其中的 3 个字母为首字母大写、后两个字母小写的月份缩写形式。 | 
| (\(\d{3}\)-)?\d{3}-d{4} | (999)-000-0000 | 美国电话号码,区号为可选项。如果用户不想输入可选字符,则可输入空格,也可以将鼠标指针直接放在掩码中由第一个 0 表示的位置。 | 
| $\d{6}.00 | $999,999.00 | 0 到 999999 范围内的货币值。货币、千分位和小数点字符将在运行时由区域性特定的等效字符替代。 |