正则表达式允许“单个0”或“任何其他数字的数字?

时间:2012-12-19 16:22:21

标签: regex

我需要一个正则表达式来允许单个0或任何其他数字不以零开头的数字所以:

  允许使用

0或23443或984756,但不允许使用0123。

我有以下仅允许1到9

[1-9]\d

2 个答案:

答案 0 :(得分:5)

查找单独的0或1-9,后跟任何其他数字。

^(0|[1-9]\d*)$

如果您想匹配较大字符串中的数字,请使用字词边界标记\b代替^$

\b(0|[1-9]\d*)\b

答案 1 :(得分:0)

您不需要强制所有内容都使用单个正则表达式来执行此操作。

如果您使用多个正则表达式,每个正在进行特定检查,将会更加清晰。在Perl中,你会这样做,但你可以适应C#就好了。

if ( ($s eq '0') || (($s =~ /^\d+$/) && not ($s =~ /^0/)) )

您明确明确了目的:

if ( (string is '0') OR ((string is all digits) AND (string does not start with '0')) )

请注意,首先检查字符串是否为0甚至根本不使用正则表达式,因为您要与单个值进行比较。

让我们使用您的宿主语言的表达形式,而不是试图将逻辑塞入正则表达式。