0 から 9 までの数字のみを受け入れ、それ以外は受け入れない正規表現が必要です。文字や記号は受け付けません。
私はこれがうまくいくと思いました:
^[0-9]
あるいは
\d+
ただし、これらは文字を受け入れます: ^、$、(、) など
上記の両方の正規表現でうまくいくと思いましたが、なぜそれらの文字が受け入れられるのかわかりません。
編集:
私がやっていることはまさにこれです:
private void OnTextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
{
textbox.Text = string.Empty;
}
}
これにより、上で述べた文字が許可されます。
ベストアンサー1
正規表現は、「1A」のような文字列を含む、数字で始まる^[0-9]
ものすべてに一致します。部分一致を避けるには、末尾に a を追加します。$
^[0-9]*$
これは、0 桁を含む任意の桁数を受け入れます。1 桁以上の桁を受け入れるには、 を*
に変更します+
。1 桁だけを受け入れるには、 を削除します*
。
更新:の引数を混同していますIsMatch
。パターンは最初の引数ではなく、2 番目の引数である必要があります。
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
注意: JavaScriptでは は\d
と同等です[0-9]
が、.NETでは\d
デフォルトで は任意のUnicode 10進数[0-9]
႒ (ミャンマー語 2) や ։ (N'Ko 9) などの珍しい文字も含まれています。アプリがこれらの文字に対応していない限り、RegexOptions.ECMAScriptフラグ)。