3

単一の0またはゼロで始まらない他の桁数を許可する正規表現が必要です。

0または23443または984756は許可されますが、0123は許可されません。

私は1から9だけを許可する次のものを持っています

[1-9]\d
4

2 に答える 2

7

単独の0または1-9の後に他の数字が続くものを探します。

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

大きな文字列内の数字を一致させる場合は、andの代わりに単語境界マーカーを使用し\bます。^$

\b(0|[1-9]\d*)\b
于 2012-12-19T16:24:36.667 に答える
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単一の値と比較しているため、文字列が正規表現をまったく使用していないかどうかを確認する最初のチェックに注意してください。

ロジックを正規表現に詰め込もうとするのではなく、表現力豊かな形式のホスト言語を使用しましょう。

于 2012-12-19T17:15:55.557 に答える