我需要一个正则表达式来允许单个 0 或任何其他不以零开头的数字,因此:
允许使用 0 或 23443 或 984756,但不允许使用 0123。
我有以下仅允许 1 到 9
[1-9]\d
我需要一个正则表达式来允许单个 0 或任何其他不以零开头的数字,因此:
允许使用 0 或 23443 或 984756,但不允许使用 0123。
我有以下仅允许 1 到 9
[1-9]\d
寻找一个单独的 0 或 1-9,后跟任何其他数字。
^(0|[1-9]\d*)$
如果要匹配较大字符串中的数字,请使用单词边界标记\b
代替^
and $
:
\b(0|[1-9]\d*)\b
您无需将所有内容强制转换为单个正则表达式即可执行此操作。
如果您使用多个正则表达式会更清楚,每个正则表达式都进行特定检查。在 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
根本不使用正则表达式,因为您正在与单个值进行比较。
使用宿主语言的表达形式,而不是试图将逻辑塞进正则表达式。