!使用csharp,Regex.IsMatch无法以窗口形式工作

时间:2011-05-24 08:21:59

标签: c# regex winforms visual-studio

我正在使用c#在我的窗口表单上应用正则表达式。但是字段上的正则表达式无法正常工作

if (txtRefno.Text == "" && !Regex.IsMatch(txtRefno.Text, @"^[0-9]+$"))
{
    msg.Text = "reference no. contain Invalid characters";
}

但它不起作用并接受一切 我将模式更改为"^[0-9]+$",但收到的结果相同;然后我改变了regex.IsMatch(inputstring, pattern) == false;的条件,然后应该显示错误,但它也不适用于我。

2 个答案:

答案 0 :(得分:9)

我无法帮助你处理正则表达式,因为我不是很强大,但我认为你应该在你的if语句中用OR替换AND以允许编译器在文本框中检查正则表达式不是空的。

if (txtRefno.Text.trim() == string.Empty || !Regex.IsMatch(txtRefno.Text, @"^[0-9]+$"))
{
    msg.Text = "reference no. contain Invalid characters";
}

或者如果你不想在texbox为空的情况下显示消息,你可以使用下面的

if (txtRefno.Text.trim() != string.Empty && !Regex.IsMatch(txtRefno.Text, @"^[0-9]+$"))
    {
        msg.Text = "reference no. contain Invalid characters";
    }

答案 1 :(得分:0)

问题不在于正则表达式,而是在布尔表达式的第一部分。没有比较空字符串。将其更改为

txtRefno.Text!=“”