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

我在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

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

有效的条件是

=   ==   <   >   <=   >=   !=

任何建议是高度赞赏

谢谢。


你可以像Flee一样使用第三方库文件来评估你的表达式。


假设你只允许条件的每一边都有整数,这样的事情应该可以工作:

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

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


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

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;
}

如果你愿意,你可以很容易地定制这个。

链接地址: http://www.djcxy.com/p/77007.html

上一篇: Regex validation of operators in conditional statements

下一篇: Match Anything