掩码

数字掩码模式

要启用 Numeric 掩码类型,则把 MaskProperties.MaskType 属性 (属于RepositoryItemTextEdit.Mask 对象) 设置为MaskType.Numeric。 此掩码自身应该通过 MaskProperties.EditMask 属性被指定。

可以使用预定义掩码或自定义掩码。 这些掩码与在 MSDN 中的 数字格式字符串 文档描述的显示格式相类似,因此编辑器的编辑掩码与显示格式可以相匹配。 在这种情况下,在编辑模式和显式模式中的编辑器取值将是相同的。 要定制编辑器的显示格式,可以使用 RepositoryItem.DisplayFormat 属性。

下面列出的大多数掩码都会受到当前 culture 的影响。 例如,culture 定义了货币符号、作为千位分隔符的符号、默认的小数点右侧的数位数目等。 所有这些设置都由当前 culture 的CultureInfo.NumberFormat 属性提供。 要定制这些设置,则在控制面板中使用“区域和语言选项”对话框。

Note注意

如果编辑器的编辑值是整数类型,那么编辑器仅接收整数值。 最终用户不能输入数值的小数部分,即使是在编辑器的掩码中允许小数部分。

 预定义的掩码

预定义的掩码允许最终用户编辑公共数字类型的数字值。 标准掩码表现为 Axx 形式的字符串,其中 A 是单个字母型字符 (掩码说明符);xx 是称为精度说明符的可选整数。 可用的掩码说明符在下表中列出。 精度说明符的范围从 0 到 99,并且控制有效位数或者小数点右侧的 0 的数目。

说明符名称说明示例

Culture: 英语(美国)

c 或 CCurrency (货币)此掩码用于输入货币金额。 此编辑掩码包含一个可以被最终用户编辑的取值部分,以及一个不能被编辑的货币符号。 此掩码的格式由当前 culture 确定。 影响数字值如何被当前 culture 呈现的不同设置,是由当前 culture 的CultureInfo.NumberFormat 属性提供的。

精度说明符指示所需的小数位数。 如果省略精度说明符,则使用在 NumberFormat 对象给定的默认货币精度。

(EditMask = "c"; EditValue = 1024.5)

(EditMask = "c0"; EditValue = 20010)

D 或 dDecimal (十进制数)此掩码用于输入固定长度及可变长度的整数值。

精度说明符指示可以输入的最大数字个数。 如果精度说明符等于 0 或被省略,则输入字符串的长度不受限制。

在编辑期间,如果编辑器的取值是实数,则该值的小数部分将被舍弃。

(EditMask = "d"; EditValue = 1501)

F 或 f

G 或 g

Fixed-point (定点)此掩码用于编辑有固定长度小数部分的实数值。

精度说明符指示所需的小数位数。 如果省略精度说明符,则使用在 NumberFormat 对象给定的默认数值精度。

(EditMask = "f"; EditValue = 1024.5)

n 或 NNumber (数值)此掩码用于输入实数值的整数。 千位分隔符被插入在小数点左侧的(三位的)每组之间。

精度说明符指示所需的小数位数。 如果省略精度说明符,则使用在 NumberFormat 对象给定的默认数值精度。

(EditMask = "n"; EditValue = 1024.5)

PPercent (百分数, 模式 1)此掩码用于输入百分数。 输入的字符串被“原样”(与 'p' 掩码相比较) 转换为数值。 因此,如果输入了字符串 "15 %",则编辑器的取值将是 15。

根据所输入数值的符号,此掩码的格式由 System.Globalization.NumberFormatInfo.PercentNegativePattern 和 System.Globalization.NumberFormatInfo.PercentPositivePattern 属性确定。

精度说明符指示所需的小数位数。 如果省略精度说明符,则使用在 NumberFormat 对象给定的默认数值精度。

(EditMask = "P"; EditValue = 25)

pPercent (百分数, 模式 2)此掩码用于输入百分数。 输入的字符串被转换为数值并除以 100。 计算结果被作为编辑器的取值 (与 'P' 掩码相比较)。 因此,如果输入了字符串 "15 %",则编辑器的取值将是 0.15。

根据所输入数值的符号,此掩码的格式由 System.Globalization.NumberFormatInfo.PercentNegativePattern 和 System.Globalization.NumberFormatInfo.PercentPositivePattern 属性确定。

精度说明符指示所需的小数位数。 如果省略精度说明符,则使用在 NumberFormat 对象给定的默认数值精度。

(EditMask = "p"; EditValue = 0.25)

自定义掩码

如果预定义掩码不符合特定的需求,则可以使用自定义掩码。 可以使用下列字符来创建用于编辑数值的自定义掩码。

字符名称说明
0零占位符可以在相应的位置输入十进制数字位 (0-9)。 空白占位符被以 '0' 字符表示。 当输入的字符串被转换为编辑器的取值时,数值左侧的空白被解释为 0。
#数字占位符在相应的位置或左侧空白处可以输入一个十进制数字 (0-9)。 空白占位符不被显示。 当输入的字符串被转换为编辑器的取值时,数字左侧的空白不存储到结果中。
.小数点格式字符串中的第一个“.”字符确定格式化的值中的小数点分隔符的位置。 用作小数分隔符的实际字符由 System.Globalization.NumberFormatInfo.NumberDecimalSeparator 属性确定。
,千位分隔符如果“,”字符出现在掩码中,则千位分隔符将被插入到小数点左侧的每组数字之间,正如在 NumberFormat 对象中定义的那样。

如果掩码包含了货币符号,则每组数字的位数由 System.Globalization.NumberFormatInfo.CurrencyGroupSizes 属性确定。 表示每组分隔符的字符由 System.Globalization.NumberFormatInfo.CurrencyGroupSeparator 属性确定。

如果掩码包含了百分比符号(%),则每组数字的位数由 System.Globalization.NumberFormatInfo.PercentGroupSizes 属性确定。 表示每组分隔符的字符由 System.Globalization.NumberFormatInfo.PercentGroupSeparator 属性确定。

如果掩码不包含货币符号和百分比符号,则每组数字的位数由 System.Globalization.NumberFormatInfo.NumberGroupSizes 属性确定。 表示每组分隔符的字符由 System.Globalization.NumberFormatInfo.NumberGroupSeparator 属性确定。

%百分比占位符如果“%”符号出现在掩码中,则在把输入的取值转换为编辑器的取值时,输入的取值会被除以 100。 因此,如果输入了字符串“15 %”,则编辑器的取值将是 0.15。

所用的百分比符号取决于当前的 culture。 一个适当的符号会被插入到编辑框中的特定位置,此位置与掩码中出现“%”符号的位置对应。

%%百分比占位符如果“%%”字符串出现在掩码中,则在把输入的取值转换为编辑器的取值时,输入的取值不会被除以 100。 因此,如果输入了字符串“15 %”,则编辑器的取值将是 15。

所用的百分比符号取决于当前的 culture。 一个适当的符号会被插入到编辑框中的特定位置,此位置与掩码中出现“%”符号的位置对应。

\转义符跟随在转义符后面的字符会被原样插入到编辑框中。 要在编辑框中显示一个反斜杠,则掩码中必须包含“\\”字符串。
;部分分隔符“;”字符用于分隔掩码中的正数和负数部分。

掩码可以包含由“;”字符定界的两个部分。 第一个部分定义输入正数的掩码,第二个部分定义输入负数的掩码。 最终用户可以通过按下“-”键来切换取值的符号。 在这种情况下,根据取值的符号,输入的取值被自动使用适当的掩码重新设置格式。

如果省略了“;”字符和负数的掩码,则编辑器将使用由 NumberFormat 对象所确定的负数的默认模式。

如果“;”字符后面跟随的是空字符串,则编辑器不允许最终用户输入负数值。

$货币符号定义由当前 culture 决定的货币符号的位置。 此符号可以通过 System.Globalization.NumberFormatInfo.CurrencySymbol 属性访问。
其他任意字符原义字符出现在掩码中的其他任意字符都被原样插入到编辑框中。

要在编辑框中按原样显示特定的字符,则应该在它们前面放置转义符(“\”)。

 最终用户功能

数字掩码只允许最终用户输入数值。 在这种掩码模式中的文本不能被编辑器。
  • 按下“-”键改变被编辑取值的符号。 插入点可以位于编辑框内的任意位置。
  • 按下向上键和向下键时,递增或递减插入点位置左侧的数字。 如果选中了全部文本,则按下这些按键时会递增或递减小数点左侧的数字。
  • 滚动鼠标滑轮时,递增或递减插入点位置左侧的数字。 如果选中了全部文本,则滚动鼠标滑轮时会递增或递减小数点左侧的数字。

 示例

下面是自定义数字掩码的示例。 要查看预定义掩码的示例,请参阅“预定义的掩码”小节中的表格。

1. 一个输入实数的掩码,其小数点左侧的最大位数是 4: #,##0.00

使用千位分隔符来分隔三位数字组。 取值的小数部分总是包含两位数字。

(EditValue = 3080.6);

(EditValue = -3080.6)。

2. 正数使用相同的掩码。 负数使用双尖括号括起来:#,##0.00;<<#,##0.00>>


 日期-时间掩码模式

XtraEditors 库提供了两种 DateTime 掩码模式:

  • DateTime 掩码模式;
  • DateTimeAdvancingCaret 掩码模式。 它与前一种掩码模式类似。 唯一的区别是在最终用户输入并完成日期/时间值特定的部分之后,插入点会自动移动到可编辑日期/时间值的后续部分。
要启用所需的 DateTime 掩码模式,则把 MaskProperties.MaskType 属性 (属于 RepositoryItemTextEdit.Mask 对象) 设置为 MaskType.DateTimeMaskType.DateTimeAdvancingCaret。 此掩码自身应该通过 MaskProperties.EditMask 属性被指定。

在默认情况下,DateEdit 控件使用 MaskType.DateTime 掩码模式。 要允许插入点自动步进,则把编辑器的掩码类型设置为 MaskType.DateTimeAdvancingCaret

可以使用预定义掩码或自定义掩码。 这些掩码与在 MSDN 中的 日期和时间格式字符串 文档描述的显示格式相类似,因此编辑器的编辑掩码与显示格式可以相匹配。 在这种情况下,在编辑模式和显式模式中的编辑器取值将是相同的。 要定制编辑器的显示格式,可以使用 RepositoryItem.DisplayFormat 属性。

下面列出的大多数掩码都会受到当前 culture 的影响。 例如,culture 定义了月份名称、用作日期分隔符的符号、短日期和长日期模式等。 所有这些设置都由当前 culture 的CultureInfo.DateTimeFormat 属性确定。 要定制这些系统设置,则在控制面板中使用“区域和语言选项”对话框。

日期/时间掩码仅支持下列历法: Gregorian(格里历)、Korean、Taiwan 和 Thai Buddhist(泰国佛历)。

 预定义的掩码

预定义的掩码允许最终用户编辑有公共模式的日期/时间值。 标准掩码由标识了适当模式的单个字符组成。 在下表中列出了可用的掩码。

标准掩码名称说明示例

Culture: 英语(美国)

d短日期模式此掩码与由 DateTimeFormatInfo.ShortDatePattern 属性指定的模式相匹配。
D长日期模式此掩码与由 DateTimeFormatInfo.LongDatePattern 属性指定的模式相匹配。
t短时间模式此掩码与由 DateTimeFormatInfo.ShortTimePattern 属性指定的模式相匹配。
T长时间模式此掩码与由 DateTimeFormatInfo.LongTimePattern 属性指定的模式相匹配。
f完整日期/时间模式(短时间)此掩码组合了长日期和短时间模式,由空格符分隔。
F完整日期/时间模式(长时间)此掩码与由 DateTimeFormatInfo.FullDateTimePattern 属性指定的模式相匹配。
g常规日期/时间模式(短时间)此掩码组合了短日期和短时间模式,由空格符分隔。
G常规日期/时间模式(长时间)此掩码组合了短日期和长时间模式,由空格符分隔。
M 或 m月日模式此掩码与由 DateTimeFormatInfo.MonthDayPattern 属性指定的模式相匹配。
R 或 rRFC1123 模式此掩码与由 DateTimeFormatInfo.RFC1123Pattern 属性指定的模式相匹配。
s可排序的日期/时间模式;符合 ISO 8601由掩码与由 DateTimeFormatInfo.SortableDateTimePattern 属性指定的模式相匹配。
u通用的可排序日期/时间模式此掩码与由 DateTimeFormatInfo.UniversalSortableDateTimePattern 属性指定的模式相匹配。
Y 或 y年月模式此掩码与由 DateTimeFormatInfo.YearMonthPattern 属性指定的模式相匹配。

 自定义掩码

如果预定义掩码不符合特定的需求,则可以使用自定义掩码。 可以使用下列掩码说明符来创建用于编辑日期/时间值的自定义掩码。

掩码说明符说明
d月中日期的占位符。 如果月中日期只是一位数字 (1-9),则它被显示为一位数字。

注意,如果单独使用“d”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (短日期模式)。 如果“d”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。

dd月中日期的占位符。 如果月中日期只是一位数字 (1-9),则它被使用前导零格式化 (01-09)。
ddd显示当前日期(在一周内)的缩写名称。 缩写名称由当前 culture 的 DateTimeFormatInfo.AbbreviatedDayNames 属性确定。

此说明符表示的取值不能被编辑。

dddd (加任意数量的“d”字符)显示当前日期(在一周内)的完整名称。 日期的完整名称由当前 culture 的 DateTimeFormatInfo.DayNames 属性确定。

此说明符表示的取值不能被编辑。

f由一位数字表示的秒部分(十分之几秒)的占位符。

注意,如果单独使用“f”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (完整日期/时间模式)。 如果“f”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。

ff由两位数字表示的秒部分(百分之几秒)的占位符。
fff由三位数字表示的秒部分(毫秒)的占位符。
ffff显示四位数字的秒部分(万分之几秒)。

此说明符表示的取值不能被编辑。

fffff显示五位数字的秒部分(十万分之几秒)。

此说明符表示的取值不能被编辑。

ffffff显示六位数字的秒部分(百万分之几秒)。

此说明符表示的取值不能被编辑。

fffffff显示七位数字的秒部分(千万分之几秒)。

此说明符表示的取值不能被编辑。

g显示当前日期/时间值的纪元 (例如 A.D.)。

此说明符表示的取值不能被编辑。

h日期/时间值的小时部分的占位符,其范围是 1-12。
hh日期/时间值的小时部分的占位符,其范围是 1-12。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。
H日期/时间值的小时部分的占位符,其范围是 0-23。
HH日期/时间值的小时部分的占位符,其范围是 0-23。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。
m日期/时间值的分钟占位符,其范围是 0-59。
mm日期/时间值的分钟占位符,其范围是 0-59。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。
M在此位置的月份占位符,其限度是 1-12 范围内的数字。
MM在此位置的月份占位符,其限度是 1-12 范围内的数字。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。
MMM月份缩写名称的占位符。 月份缩写名称由当前 culture 的 DateTimeFormatInfo.AbbreviatedMonthNames 属性确定。
MMMM月份完整名称的占位符。 月份完整名称由当前 culture 的 DateTimeFormatInfo.MonthNames 属性确定。
s日期/时间值的秒部分的占位符,其范围是 0-59。

注意,如果单独使用“s”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (可排序的日期/时间模式)。 如果“s”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。

ss日期/时间值的秒部分的占位符,其范围是 0-59。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。
t日期/时间值的 A.M./P.M. 指示符的首字符的占位符。

注意,如果单独使用“t”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (短时间模式)。 如果“t”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。

tt日期/时间值的 A.M./P.M. 指示符的占位符。
y输入日期/时间值年份的后两位数字的占位符。

注意,如果单独使用“y”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (年月模式)。 如果“y”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。

yy输入日期/时间值年份的后两位数字的占位符。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。
yyyy输入包含世纪的日期/时间值年份部分的占位符。
z仅以整小时数来显示系统当前时区的时区偏移量。 偏移量始终显示为带有前导符号 (0 显示为“+0”),指明当前时区早于格林尼治标准时间的小时数 (+)、 或者晚于格林尼治标准时间的小时数 (-)。 取值范围是 -12 至 +13。 如果偏移量是单个数字 (0-9),则它显示为有适当前导符号的单个数字。

此说明符表示的取值不能被编辑。

zz仅以整小时数来显示系统当前时区的时区偏移量。 偏移量始终显示为带有前导或后接符号 (0 显示为“+00”),指明当前时区早于格林尼治标准时间的小时数 (+)、 或者晚于格林尼治标准时间的小时数 (-)。 取值范围是 -12 至 +13。 如果偏移量是单个数字 (0-9),则它显示为有适当前导符号的以前导零格式化的值 (01-09)。

此说明符表示的取值不能被编辑。

zzz以小时和分钟来显示系统当前时区的时区偏移量。 偏移量始终显示为带有前导或后接符号 (0 显示为“+00:00”),指明当前时区早于格林尼治标准时间的小时数 (+)、 或者晚于格林尼治标准时间的小时数 (-)。 取值范围是 -12:00 至 +13:00。 如果偏移量是单个数字 (0-9),则它显示为有适当前导符号的以前导零格式化的值 (01:00-09:00)。

此说明符表示的取值不能被编辑。

:时间分隔符。 实际的时间分隔符由当前 culture 的 DateTimeFormatInfo.TimeSeparator 属性确定。
/日期分隔符。 实际的日期分隔符由当前 culture 的 DateTimeFormatInfo.DateSeparator 属性确定。
" abc " 或 ' abc '用引号括起的字符串。 把由单引号或双引号括起的字符串原样插入到编辑框中。 此字符串不能被编辑。
% c把标准掩码说明符之一的 c 说明符解释为自定义掩码说明符。

注意,如果以单个字符单独使用某个掩码说明符,则它被解释为标准掩码说明符。 仅当掩码说明符由两个或两个以上字符组成时,它才被解释为自定义说明符。 为了使用与某个标准说明符相同的自定义说明符,应该在掩码中以 % 字符前导它。

\ c反斜杠被用作转义符。 它把后面跟随的字符原样插入到编辑框中。
任何其他字符其他字符被原样插入到编辑框中。

 最终用户功能

  • 按下向上键和向下键时,递增或递减插入点指明的日期/时间值部分。 例如,如果“日”部分被编辑,则按下这些快捷键会改变“日”。 如果“月份”部分被编辑,则 (按下这些快捷键) 会改变“月份”。
  • 滚动鼠标滑轮时,递增或递减插入点指明的日期/时间值部分 (与按下向上键和向下键类似)。
  • 当月份的完整名称或缩写名称被编辑时,则可以通过键入月份名称的词首字母来选中特定的月份。 例如,按下“j”字符则选中“January”。 随后按下“j”键选中“June”,之后则是“July”。
  • 当月份的完整名称或缩写名称被编辑时,则可以通过键入月份的序数 (1-12) 来选中特定的月份。
  • 可以按下空格键,使插入点从当前位置移动到可编辑的日期/时间值的后续部分。
  • 可以按下表示日期分隔符的字符,使插入点从当前位置移动到可编辑的日期值的后续部分。
  • 可以按下表示时间分隔符的字符,使插入点从当前位置移动到可编辑的时间值的后续部分。
  • 如果掩码要求使用四位数字输入年份 (“yyyy”掩码),则最终用户可以使用该年份的后两位 (或后一位) 数字来输入所需的年份。 自动根据当前 culture (请参阅 MSDN 中的 System.Globalization.Calendar.TwoDigitYearMax 主题) 确定世纪。 要插入属于一世纪的年份,则在输入年之前按下“0”字符。

 示例

下面是自定义日期/时间掩码的示例。 要查看预定义掩码的示例,请参阅“预定义的掩码”小节。

1. 掩码要求在首个位置输入年份,在第二个位置输入月份,在第三个位置输入“日”。 “-”字符用作日期分隔符:yyyy-MM-dd

2. 同一个掩码,但是使用月份的缩写名称来编辑月份。 另外,在取值的右侧显示日期 (在一周内的) 名称:yyyy-MMM-dd dddd

日期 (在一周内) 的名称不能被编辑。 

 全功能正则表达式

全功能正则表达式提供了几乎无限制的灵活性来创建输入掩码。 这种模式中掩码所使用的语法与由 POSIX ERE 规范中定义的语法相类似。 不支持后向引用。

如果编辑器接受特定格式的数字或日期/时间值,则可以使用 Numeric 和 DateTime 掩码来代替正则表达式。 在这些模式中,掩码使用简单的语法,并且有与公共的数字及日期/时间值相对应的大量预定义掩码。 请参阅掩码类型: 数字掩码类型: 日期-时间 主题来获知更多细节。

关于可用掩码模式的总说明信息,请参阅 掩码编辑器概述 文档。

在创建掩码时,与其他掩码模式相比较而言,正则表达式提供了大量的重大利好。 可以创建允许下列操作的掩码:

  • 输入不确定长度的取值;
  • 使用几种可选格式之一来输入取值;
  • 在某个特定位置输入只来源于特定范围的字符;
此外,当使用完整的正则表达式时,可以启用自动完成功能。 编辑器将根据当前的掩码,尝试完成由最终用户输入的文本。

要启用全功能正则表达式,则把 MaskProperties.MaskType 属性 (属于RepositoryItemTextEdit.Mask 对象) 设置为MaskType.RegEx。 此掩码自身应该通过MaskProperties.EditMask 属性被指定。

一个掩码表示一个由元字符、限定符和特殊字符组成的字符串。

 元字符

元字符用于表示符号的范围。 最终用户只能在与元字符对应的位置中输入文本。 在掩码中特定位置上有元字符时,最终用户可以在编辑框中输入与该位置相关范围内的任何字符。 下表列出了可用的元字符:

字符说明
.与任何字符匹配。
[aeiou]与包含在指定字符组中的任何单个字符匹配。
[^aeiou]与没有包含在指定字符组中的任何单个字符匹配。
[0-9a-fA-F]使用连接号 () 允许指定连续的字符范围。
\w与任何单词字符匹配。
\W与任何非单词字符匹配。
\d与任何十进制数字匹配。 与 [0-9] 等效。
\D与任何非数字字符匹配。 与 [^0-9] 等效。
\s与任何空白字符匹配 (空格、跳格等)。
\S与任何非空白字符匹配。
\x 20使用十六进制表示形式 (恰好两位) 与 ASCII 字符匹配。
\u 0020使用十六进制表示形式 (恰好四位) 与 Unicode 字符匹配。
\p{ unicodeCategoryName }与指定 unicode 字符类别中的任何字符匹配。 Unicode 通用类别的完整名称和缩写名称在下面列出。 要获得关于其他类别的信息,请参阅 MSDN 中的System.Text.UnicodeEncoding.UnicodeCategory 主题。

Letter ( L ) - 所有字母。

UppercaseLetter ( Lu ) - 大写字母。 输入的字符被转换为大写。

LowercaseLetter ( Ll ) - 小写字母。 输入的字符被转换为小写。

Number (数值) ( N ) - 所有数字。

符号 ( S ) - 数学符号、货币符号或修饰符。

Punctuation ( P ) - 所有标点符号。

Separator ( Z ) - 所有分隔符。

\P{ unicodeCategoryName }与不在指定 unicode 字符类别中的任何字符匹配。这是“\p{unicodeCategoryName}”说明符的反面。
\R.与当前 culture 的 System.Globalization.NumberFormatInfo.NumberDecimalSeparator 属性指定的小数点分隔符匹配。
\R:与当前 culture 的 DateTimeFormatInfo.TimeSeparator 属性指定的时间分隔符匹配。
\R/与当前 culture 的 DateTimeFormatInfo.DateSeparator 属性指定的日期分隔符匹配。
\R{ name }name 为下列参数之一:

DateSeparator - 匹配日期分隔符 (等效于“\R/”)

TimeSeparator - 匹配时间分隔符 (等效于“\R:”)

AbbreviatedDayNames - 匹配“日”的缩写名称之一,取决于当前 culture。

AbbreviatedMonthNames - 匹配“月份”的缩写名称之一,取决于当前 culture。

AMDesignator - 匹配“正午以前”小时值的字符串指示符。

DayNames - 匹配“日”的完整名称之一,取决于当前 culture。

MonthNames - 匹配“月份”的完整名称之一,取决于当前 culture。

PMDesignator - 匹配“正午以后”小时值的字符串指示符。

NumberDecimalSeparator - 匹配用作数值小数点分隔符的字符串 (等效于“\R.”)。

CurrencyDecimalSeparator - 匹配用作货币值小数点分隔符的字符串。

CurrencySymbol - 匹配用作货币符号的字符串。

NumberPattern - 匹配由当前 culture 所指定格式的任何数值。 如果在数值中使用的小数位数被设置为 0,则此掩码仅与整数值相匹配。 否则,此掩码与实数值相匹配。

CurrencyPattern - 匹配由当前 culture 所指定格式的任何货币值 (没有货币符号)。 如果在货币值中使用的小数位数被设置为 0,则此掩码仅与整数值相匹配。 否则,此掩码与实数值相匹配。

\ AnyChar与指定的字符匹配。 例如“\*”掩码字符串可以用于原样插入“*”字符,“\\”掩码字符串则原样插入“\”符,等等。

 限定符

限定符是指示前导字符重复次数的特殊字符。 请参阅下表中的限定符及其说明。

限定符说明示例
*指定零个或更多个匹配。“\w*” 掩码匹配由零个或多个字母字符组成的字符串。 它等效于“\w{0,}”掩码。
+指定一个或多个匹配。“\w+” 掩码匹配由一个或多个字母字符组成的字符串。 它等效于“\w{1,}”掩码。
?指定零个或一个匹配。“\w?” 掩码匹配零个或一个字母字符。 它等效于“\w{0,1}”掩码。
{ n }指定恰好 n 个匹配。“\d{4}” 掩码匹配恰好四位数字。
{ n ,}指定至少 n 个匹配。“\d{2,}” 掩码匹配两位或更多位数字。
{ n , m }指定至少 n 个但不多于 m 个匹配。“\d{1,3}” 掩码匹配一位、两位或三位数字。

 特殊字符

下表列出了实现分组功能及可选匹配的可用特殊字符。

字符说明示例
|可选符号。 可以用于实现从两个或多个可选匹配项中选择一个。

“1|2|3” 掩码匹配“1”、“2”或“3”。

“abc|123” 掩码匹配“abc”或“123”。

“\d{2}|\p{L}{2}” 掩码匹配两位数字或两个字母。

()分组。 可以使用圆括号来创建子表达式,或者限定可选匹配项的范围。

“(an|ba)t” 掩码匹配“ant”或“bat”。

“(net)+” 掩码匹配“net”、“netnet”、“netnetnet”、…… 字符串。 作为比较,“net+” 掩码匹配“net”、“nett”、“nettt”、…… 字符串。

“(0|1)+” 掩码匹配不确定长度的由“0”和“1”组成的字符串。

 其他任何字符

其他任何字符 (不是元字符、不是限定符、也不是特殊字符) 匹配自身。 例如,如果“a”字符出现在掩码中,则它与“a”字符匹配。

此外,如果某个特定字符 (即使是元字符、限定符或特殊字符) 由反斜杠前导 (例如 “\[”、“\*”),则此表达式匹配指定的字符 (“[” 和 “*”)。

 优先规则

下面以递减的优先顺序列出了操作符:
  1. 转义符 “\ AnyCharacter ”; 括号表达式“[...]”
  2. 分组 “(...)”
  3. 限定符 “...*”、“...+”、“...?”、“{...}”
  4. 连续串
  5. 可选项 “...|...”

 示例

1. 输入数值的掩码,有或没有小数部分: \d+(\R.\d{0,2})?

下面是有效取值的示例:


Simple 掩码模式

要启用 Simple 掩码模式,则把 MaskProperties.MaskType 属性 (属于RepositoryItemTextEdit.Mask 对象) 设置为MaskType.Simple。 此掩码自身应该通过 MaskProperties.EditMask 属性被指定。

一个掩码表示一个可以由元字符、特殊字符和原义字符组成的字符串。

 元字符

元字符用于表示符号的范围。 最终用户只能在与元字符对应的位置中输入文本。 在掩码中特定位置上有元字符时,最终用户可以在编辑框中输入与该位置相关范围内的任何字符。 下表列出了可用的元字符:

字符含义
LL 字符要求在其位置输入字母字符。 美国的字母字符是 A-Z、a-z。
ll 字符仅允许在其位置输入字母字符,但是不强求。
AA 字符要求在其位置输入字母或数字字符。 美国的字母或数字字符是 A-Z、a-z、0-9。
aa 字符只允许在其位置输入字母或数字字符,但是不强求。
CC 字符要求在其位置输入任意字符。
cc 字符允许在其位置输入任意字符,但是不强求。
00 字符要求在其位置输入数字字符。
99 字符只允许在其位置输入数字字符,但是不强求。
## 字符只允许在其位置输入数字字符、正号或负号,但是不强求。

 特殊字符

下表列出了可用的特殊字符,它们用于控制输入字符串的大小写,以及呈现多种定界符和货币符号。

字符含义
>如果在掩码中出现 > 字符,则在它后面的所有字符都转换为大写,直至到达掩码末或遇到 < 字符。
<如果在掩码中出现 < 字符,则在它后面的所有字符都转换为小写,直至到达掩码末或遇到 > 字符。
<>如果这两个字符一起出现在掩码中,则不执行大小写检查,并且使用由最终用户输入的大小写来格式化数据。
// 字符用于分隔日期中的月份、日和年份。 如果分隔月份、日和年份的字符与应用程序运行的系统的区域设置不同,则此字符被替换为区域设置中指定的字符。
:: 字符用于分隔时间值中的小时、分钟和秒。 如果分隔小时、分钟和秒的字符与应用程序运行的系统的区域设置不同,则此字符被替换为区域设置中指定的字符。
$$ 字符用于指示货币值。 如果指示货币值的字符与应用程序运行的系统的区域设置不同,则它被替换为区域设置中指定的字符。

 原义字符

不是元字符、也不是特殊字符的字符被称为原义字符。 原义字符被自动原样插入到编辑框中的由掩码定义的指定位置。 最终用户不需要输入原义字符。 在编辑时光标会跳过原义字符。

如果以反斜杠 (\) 前导,则元字符和特殊字符也可以出现为原义字符。

 示例

1. 输入电话号码的掩码: (000)000-00-00

此掩码中的每个元字符“0” 都要求在相应位置输入数字字符。 不能省略字符。 在掩码中的“-”、“(”和“)” 字符是原义字符。

下面是使用了此掩码的编辑器的插图:

(没有输入值)

(输入了值)

2. 输入有可选区号的电话号码的掩码: (999)000-00-00

此掩码中的元字符 “ 9” 允许最终用户省略电话号码的区号部分。

(无区号部分的有效电话号码)

3. 输入字母-数字序列的掩码: \A>LL-00

此掩码中的 “\A” 代表原义字符“A”。 因为“A”被用作元字符,因此必须使用反斜杠来使得“A”出现为原义字符。 “>” 命令指明后面的文本应该转换为大写。 “LL” 子串指明在此位置应该插入两个字母字符。 “00” 子串是两位数字的占位符。

(没有输入值)

(输入了值) 


 简单正则表达式

可以在两种情况下使用简单正则表达式。 第一种情况是需要为特定位置指定自定义字符范围时。 第二种情况是需要提供可变长度的掩码时。

要使用简单正则表达式构造掩码,则把 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}

由于“.”字符是保留字符,因此 “\.” 子串用于把点作为原义字符插入到掩码中。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值