数字(0~9)のみを受け入れ、文字を受け入れない正規表現 [重複] 質問する

数字(0~9)のみを受け入れ、文字を受け入れない正規表現 [重複] 質問する

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フラグ)。

おすすめ記事