2011-09-27 59 views
0

我在C#中构建了一个动态条件验证器,它可以验证写入文本框输入的条件是true还是false。条件语句中运算符的正则表达式验证

string a = "25 > 20"; 
bool aResult = ValidateInput(a); // Will generate true 

string b = "10 != 10"; 
bool bResult = ValidateInput(b); // Will generate false 

现在我坚持验证来自文本框的输入,我想正则表达式,但不知道从哪里开始真的。

有效条件等都很

= == < > <= >= != 

任何意见表示高度赞赏

感谢。

回答

1

或者您可以根据您的操作员分割字符串,然后执行验证。在LinqPad

一个快速和肮脏的代码示例:

void Main() 
{ 
    string a = "25 > 20"; 

    string b = "10 != 10"; 


    var splits = a.Split(new string[]{}, StringSplitOptions.RemoveEmptyEntries); 

    splits.Dump(); 


    var result = Validate(splits); 
    result.Dump(); 

    splits = b.Split(new string[]{}, StringSplitOptions.RemoveEmptyEntries); 

    splits.Dump(); 
    result = Validate (splits); 

    result.Dump(); 
} 

// Define other methods and classes here 

bool Validate(string[] input) 
{ 
var op = input[1]; 
switch(op) 
    { 
    case ">": 
    return int.Parse(input[0]) > int.Parse(input[2]); 
    case "!=": 
    return int.Parse(input[0]) != int.Parse(input[2]); 
    } 
    return false; 
} 

您可以轻松地,如果你想定制这个有很多。

1

假设你只允许的条件,这样的事情每一面整数应该工作:

^\s*\d+\s*(?:==?|<=?|>=?|!=)\s*\d+\s*$ 

\s*所有的地方就是让这个非常宽容额外的空白。

2

你可以使用第三方库如Flee来评估你的表情。

1
^\d+\s*(>=|<|>|<=|=|==|!=|<>)\s*\d+$