简单正则表达式不支持 全功能正则表达式 中的许多功能。 例如,不支持取值的可选有效形式,也缺少自动完成功能等。
简单正则表达式是为了向后兼容 XtraEditors 版本 2 而提供的。 可以在应用程序中使用 全功能正则表达式 来代替,以提供输入数据的更多灵活性和便利。 要获得关于其他掩码模式的信息,请参阅 掩码编辑器概述 文档。
在本主题中:
简单正则表达式
可以在两种情况下使用简单正则表达式。 第一种情况是需要为特定位置指定自定义字符范围时。 第二种情况是需要提供可变长度的掩码时。
要使用简单正则表达式构造掩码,则把 MaskProperties.MaskType 属性 (属于 RepositoryItemTextEdit.Mask 对象) 设置为 MaskType.Regular。 此掩码自身应该通过 MaskProperties.EditMask 属性被指定。
一个掩码表示一个由元字符、限定符、特殊字符和原义字符组成的字符串。元字符
元字符用于表示符号的范围。 最终用户只能在与元字符对应的位置中输入文本。 在掩码中特定位置上有元字符时,最终用户可以在编辑框中输入与该位置相关范围内的任何字符。 下表列出了可用的元字符:
字符 | 说明 |
---|---|
. | 与任何字符匹配。 |
[aeiou] | 与包含在指定字符组中的任何单个字符匹配。 |
[^aeiou] | 与没有包含在指定字符组中的任何单个字符匹配。 |
[0-9a-fA-F] |
使用连接号 ( ) 允许指定连续的字符范围。
|
\w |
与任何单词字符匹配。 \w 等效于 [a-zA-Z_0-9]。
|
\W |
与任何非单词字符匹配。 \W 等效于 [^a-zA-Z_0-9]。
|
\d |
与任何十进制数字匹配。 与 [0-9] 等效。
|
\D |
与任何非数字字符匹配。 与 [^0-9] 等效。
|
限定符
限定符是指示前导字符重复次数的特殊字符。 请参阅下表中列出的限定符及其说明。
限定符 | 说明 |
---|---|
* |
指定零个或更多个匹配; 例如,\w* 或 [a-zA-Z]* 。 等效于 {0,} 。
|
+ |
指定一个或多个匹配; 例如,\w+ 或 [a-zA-Z]+ 。 等效于 {1,} 。
|
? |
指定零个或一个匹配; 例如,\w? 或 [a-zA-Z]? 。 等效于 {0,1} 。
|
{ n } |
指定恰好 n 个匹配; 例如,[0-9]{2} 。
|
{ n ,} |
指定至少 n 个匹配; 例如,[0-9]{2,} 。
|
{ n , m } | 指定至少 n 个但不多于 m 个匹配。 |
特殊字符
下表列出了可用的特殊字符,它们用于控制输入字符串的大小写,以及呈现多种定界符和货币符号。
字符 | 说明 |
---|---|
> | 如果在掩码中出现 > 字符,则在它后面的所有字符都转换为大写,直至到达掩码末或遇到 < 字符。 |
< | 如果在掩码中出现 < 字符,则在它后面的所有字符都转换为小写,直至到达掩码末或遇到 > 字符。 |
<> | 如果这两个字符一起出现在掩码中,则不执行大小写检查,并且使用由最终用户输入的大小写来格式化数据。 |
/ | / 字符用于分隔日期中的月份、日和年份。 如果分隔月份、日和年份的字符与应用程序运行的系统的区域设置不同,则此字符被替换为区域设置中指定的字符。 |
: | : 字符用于分隔时间值中的小时、分钟和秒。 如果分隔小时、分钟和秒的字符与应用程序运行的系统的区域设置不同,则此字符被替换为区域设置中指定的字符。 |
$ | $ 字符用于指示货币值。 如果指示货币值的字符与应用程序运行的系统的区域设置不同,则它被替换为区域设置中指定的字符。 |
原义字符
不是元字符、不是限定符、也不是特殊字符的字符被称为原义字符。 原义字符被自动原样插入到编辑框中的由掩码定义的指定位置。 最终用户不需要输入原义字符。 在编辑时光标会跳过原义字符。
如果以反斜杠 (\) 前导,则用于表示保留字符的符号也可以出现为原义字符。
示例
1. 输入任意长度十六进制取值的掩码: [0-9A-F]*
[0-9A-F] 子串指明可以输入在 [0-9] 和 [A-F] 范围内的任何字符。 * 说明符指明在特定范围内的字符可以出现的次数不受限制。
2. 要求最终用户至少输入两位十六进制数字的掩码: [0-9A-F]{2,}
如果输入的数字少于两位,则编辑器将指明此取值无效:
3. 输入一个有两位小数的数值的掩码: \d*\.\d{2}
由于“.”字符是保留字符,因此 “\.” 子串用于把点作为原义字符插入到掩码中。