条件语句中运算符的正则表达式验证

时间:2011-09-27 17:35:51

标签: c# regex

我在C#中构建了一个动态条件验证器,可以验证文本框输入中写入的条件是真还是假。

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

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

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

有效条件

=   ==   <   >   <=   >=   !=

非常感谢任何建议

感谢。

4 个答案:

答案 0 :(得分:2)

您可以使用Flee之类的第三方库来评估您的表达方式。

答案 1 :(得分: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;
}

如果您愿意,可以轻松自定义。

答案 2 :(得分:1)

假设你只允许在条件的每一边使用整数,这样的东西应该有用:

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

遍布整个地方的\s*是为了使这个非常容忍额外的空格。

答案 3 :(得分:1)

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