在 MaskedTextBox 控件中使用正则表达式 (Visual Basic)
本示例演示如何转换简单的正则表达式以使用 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 属性强制它们显示另一种区域性的符号。
正则表达式和掩码
尽管可以使用正则表达式和掩码来验证用户输入,但两者并不完全等效。 与掩码相比,正则表达式能够表达更复杂的模式,但掩码能够更简明地以文化相关格式表达相同的信息。
下表将四个正则表达式及其等效掩码做了比较。
Regular Expression | Mask | 备注 |
---|---|---|
\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 范围内的货币值。 在运行时,货币、千分位和小数字符将替换为其特定于区域性的等效字符。 |