2011-09-27 160 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+$