正则表达式允许除零之外的所有其他数字,如1,10,15,90,92 ....等?

时间:2011-08-17 11:02:44

标签: c# regex

嗨我有一个senario,我必须使用正则表达式阻止字段输入零。但是我在创建正则表达式时失败了任何人都可以帮助我提供正确的正则表达式吗?

我所做的是

^[1-9]\d{0,2}(\d*|(,\d{3})*)$

但是这会失败,因为当输入数字为零(如340)时它会失败。

我的senario是该字段必须能够接受除零之外的所有其他整数

4 个答案:

答案 0 :(得分:4)

这个正则表达式怎么样:

^[1-9][0-9]*$

字符串以1到9开头,然后在0到9中有零个或多个字符。

看起来正则表达式在这里可能有点矫枉过正。你为什么不尝试这样的事情:

int value;
if (Int32.TryParse(fieldString, out value))
{
    if (value == 0)
    {
        // handle invalid value
    }
}

答案 1 :(得分:3)

可以使用模式完成:

^(?![0,]+$)\d{0,2}(\d*|(,\d{3})*)$

假设您只想接受正整数。如果表达式仅包含零和逗号,则(?![0,]+$)模式会阻止表达式匹配。第二部分来自原始表达式,并允许数字和逗号的原始组合用于其他值。

答案 2 :(得分:0)

我假设您将字段条目转换为int?如果是这样,为什么不这样做:

if (int == 0)
{
   //not valid
}

但是我猜你还在使用某种验证库?

答案 3 :(得分:0)

你可以尝试这个:

^[+-]?0*[1-9]\d*$

它接受可选的符号(加号或减号),然后是任意数量的前导零,然后是至少一个非零数字,后跟任意数量的数字。您可以在RegExr处看到它。