我正在尝试使用Regex过滤TextBox的输入。小数点前最多需要3个数字,小数点后最多需要2个数字。这可以是任何形式。
我尝试过更改regex命令,但它会产生错误,并且单个输入将无效。我在WPF中使用TextBox收集数据。
bool containsLetter = Regex.IsMatch(units.Text, "^[0-9]{1,3}([.] [0-9] {1,3})?$");
if (containsLetter == true)
{
MessageBox.Show("error");
}
return containsLetter;
我希望正则表达式过滤器接受以下类型的输入:
111.11,
11.11,
1.11,
1.01,
100,
10,
1,
答案 0 :(得分:1)
正如评论中提到的,空格是将在您的正则表达式模式中逐字解释的字符。
因此在您的正则表达式的这一部分:
([.] [0-9] {1,3})
.
和[0-9]
之间应该有一个空格,[0-9]
之后也是如此,其中正则表达式将1
与3
空格匹配。话虽如此,出于可读性目的,您有几种构造正则表达式的方法。
1)将评论移出正则表达式:
string myregex = @"\s" // Match any whitespace once
+ @"\n" // Match one newline character
+ @"[a-zA-Z]"; // Match any letter
2)使用语法在正则表达式中添加注释 (?#comment)
needle(?# this will find a needle)
3)在正则表达式中激活自由行模式:
nee # this will find a nee... dle # ...dle (the split means nothing when white-space is ignored)