在 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 属性强制它们显示为其他区域性的符号。
正则表达式和掩码
虽然正则表达式和掩码都可以用来验证用户输入,但它们并不完全相同。 与掩码相比,正则表达式可以表达更复杂的模式,但掩码可以更简洁地采用与区域相关的格式来表达相同的信息。
下表将四个正则表达式与它们的等效掩码进行比较。
正则表达式 |
掩码 |
注释 |
---|---|---|
\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。 货币字符、千位字符和十进制字符在运行时会被替换为区域特定的等效内容。 |