此示例演示如何将简单的正则表达式转换为与 MaskedTextBox 控件配合使用。
掩码语言的说明
标准 MaskedTextBox 掩码语言基于 Visual Basic 6.0 的 Masked Edit
控件所使用的掩码语言,对从该平台迁移的用户来说应该是熟悉的。
控件 Mask 的属性 MaskedTextBox 指定要使用的输入掩码。 掩码必须是由下表中的一个或多个掩码元素组成的字符串。
掩码元素 | DESCRIPTION | 正则表达式元素 |
---|---|---|
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 内,所有非掩码元素将显示为它们本身。 | 所有其他字符。 |
小数 (.)、千分位 (,)、时间 (:)、日期 (/) 和货币 ($) 符号默认根据应用程序的区域性定义显示这些符号。 可以使用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 范围内的货币值。 在运行时,货币、千分位和小数字符将替换为其特定于区域性的等效字符。 |