如何在正则表达式.Net中使用AND运算符和NOT运算符

时间:2015-03-03 13:27:36

标签: c# regex

如果是foo 100.00,我需要接受这些值。在这个foo将是恒定的,数字可以变化。

如果输入0代替100.00,我需要避免:例如:foo 0.00

  1. 我发现foo 100.00的正则表达为:^foo[\s]*[\d{1,}+(\.\d{1,2})?]
  2. 和查找foo 0.00的正则表达式为:^foo[\s]*([0]{0,}(\.[0]{0,})?)*$
  3. 现在我需要检查输入数据是否与1)匹配,并且它不应该匹配2)。

    scenario 1 : foo 100 - pass 
    scenario 2 : foo 0.00 - fail 
    scenario 3 : foo 123 - pass
    Scenario 4 : foo 0.23 - pass
    

    我该怎么做?我尝试了很多外观类型的解决方案。什么都没有给出正确的结果。我需要使用正则表达式执行此操作,因为我的C#代码具有匹配的算法,一次只匹配一个正则表达式而且无法更改。

1 个答案:

答案 0 :(得分:1)

这个完成工作:

^foo\s+(?!0\.00$)\d+\.\d+$

(?!0\.00$)为负面预测,确保没有0.00

如果小数部分是可选的:

^foo\s+(?!0\.00$)\d+(?:\.\d+)$

拒绝00.0以及0.00

^foo\s+(?!0(?:\.00?)?$)\d+(?:\.\d+)$