我需要一个正则表达式来允许单个0或任何其他数字不以零开头的数字所以:
允许使用0或23443或984756,但不允许使用0123。
我有以下仅允许1到9
[1-9]\d
答案 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
甚至根本不使用正则表达式,因为您要与单个值进行比较。
让我们使用您的宿主语言的表达形式,而不是试图将逻辑塞入正则表达式。