33

.NET を使用して作成したテキスト ボックスがあります。

そのテキストボックスを使用することにより、ユーザーは数字のみを入力できます。ただし、0 から始めないでください。1 ~ 9 から始めてください。最初の文字で 1 ~ 9 を入力したユーザー キーの後に、ユーザーは 0 を入力できます。

Regex reg = null;
reg = new System.Text.RegularExpressions.Regex("^[1-9][0-9]*$")
return reg.IsMatch(str);

それが私の正規表現です。それを使用すると、1-9 をキー入力できません。ただし、0 とアルファベットのみ。しかし、^[1-9] を使用すると、数値を入力できますが、0 を入力することはできません。

私はあなたが提案するすべての答えをすでに試しました。しかし、まだ動作しません。あなたの答えをすべて読んでいないわけではありません。

ここに写真があります..

ここに画像の説明を入力

初めて検証したいのですが、ユーザーは数字のみを入力できますが、0またはアルファベットではなく1〜9の値から始めます。最初の文字の後、ユーザーは 0 ~ 9 のみを入力できます。

私は Int.TryParse を使用しますが、処理するボタンを押した後に使用します。

reg = new System.Text.RegularExpressions.Regex("^[^0-9]");

その正規表現は、0 から 9 までの数値のみを受け入れます。

reg = new System.Text.RegularExpressions.Regex("^[^1-9]");

その正規表現は、1 から 9 までの数値のみを受け入れます。

数値 0-9 のみを受け入れる残りの部分まで、2 番目の文字の正規表現に式を追加するにはどうすればよいですか?

ちなみに、0.99は気にしません。ここでは固定価格です。0.99 または 0.123 ではありません。

それを行う他の方法はありますか?ありがとう。

4

6 に答える 6

43

0.99価格のようなものを見ている場合は、それがおそらく完全に有効であると考える必要があります。そのようなものについては、単純に複雑でないものから始めて^[0-9]*(\.[0-9]{0,2})?$(ここでも、小数点以下 3 桁などのように複雑になる可能性のあるエッジケースがあるかもしれません)、先行ゼロを許可します。 "とにかく値。

ゼロ以外で始まる必要[0-9]*があります。イニシャルを aに変更するだけ[1-9][0-9]*です。整数のみの場合(追加されたサンプルデータで示されているように)、次のようになります。

^[1-9][0-9]*$
于 2013-01-03T02:53:06.410 に答える
23

ゼロ以外の任意の数字で始まる数字を一致させるには:

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

また、0 にも一致させたい場合は、次のようにします。

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

単一のゼロのみが必要な場合は、最後のプラスを削除します

最初のゼロ以外の後に任意の英数字を許可するには:

^[1-9a-zA-Z][0-9a-zA-Z]*$
于 2013-01-03T02:55:58.483 に答える
1

コードは .NET であるため、正規表現を使用して Integer を解析しないでくださいUInt32.TryParse()メソッドを使用するだけです

uint num=0;
if(UInt32.TryParse(str, out num)){
    Console.WriteLine("Converted '{0}' to {1}.", str, num);   
}else{
    Console.WriteLine("conversion of '{0}' failed.", value==null? "": value);
}

古い答え

この単純な正規表現でそれができます^[1-9]\d*$

于 2013-01-03T02:53:28.050 に答える
-1

特定のブラウザでは、正規表現が機能しない場合もあります。したがって、同様のロジックは次のとおりです。

function name(e)
{

var key = window.event ? e.keyCode : e.which;
var keychar = String.fromCharCode(key);
var reg = /\d/;

var textField=document.getElementById("ID").value;

if(key==48)
{
if(textField==""||textField==null)
{
e.preventDefault();
return false;
}

else{
return true;
}
}

else
{
var reg = /\d/;
return reg.test(keychar);
}
} 
于 2016-04-06T02:14:58.683 に答える