如何滤除某些组合?

时间:2019-03-26 01:44:28

标签: c# regex wpf filter

我正在尝试使用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,

1 个答案:

答案 0 :(得分:1)

正如评论中提到的,空格是将在您的正则表达式模式中逐字解释的字符。

因此在您的正则表达式的这一部分:

([.] [0-9] {1,3})

  • .[0-9]之间应该有一个空格,
  • [0-9]之后也是如此,其中正则表达式将13空格匹配。

话虽如此,出于可读性目的,您有几种构造正则表达式的方法。

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)
     

Example

3)在正则表达式中激活自由行模式:

nee # this will find a nee...
dle # ...dle (the split means nothing when white-space is ignored)
     

doc:https://www.regular-expressions.info/freespacing.html

     

Example