多行文本框中的蒙版

时间:2010-11-29 08:34:59

标签: c# regex winforms

我喜欢实现textBox,其中用户只能以这样的方式插入文本:


dddddddddd,
dddddddddd,
dddddddddd,
...

其中d是数字。如果用户连续控制的行数少于10位,则验证失败并且他不能写入超过10位的一行,那么可接受的只能是逗号“,”。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

 Match m = Regex.Match(textBox.Text, @"^\d{10},$", RegexOptions.Multiline);

没试过,但应该有效。请查看herehere了解详情。

答案 1 :(得分:1)

我建议使用正则表达式

\A(?:\s*\d{10},)*\s*\d{10}\s*\Z

<强>解释

\A        # start of the string
(?:       # match the following zero or more times:
 \s*      # optional whitespace, including newlines
 \d{10},  # 10 digits, followed by a comma
)*        # end of repeated group
\s*       # match optional whitespace
\d{10}    # match 10 digits (this time no comma)
\s*       # optional whitespace
\Z        # end of string

在C#中,这看起来像

validInput = Regex.IsMatch(subjectString, @"\A(?:\s*\d{10},)*\s*\d{10}\s*\Z");

请注意,您需要使用逐字符串(@"...")或将正则表达式中的所有反斜杠加倍。