1. ホーム
  2. c#

[解決済み】数字(0~9)のみとNO文字を受け付ける正規表現【重複あり

2022-04-05 05:59:47

質問

0-9の数字のみを受け付け、それ以外は受け付けないような正規表現が必要です。文字や記号は受け付けません。

これならいけると思いました。

^[0-9]

あるいは

\d+

しかし、これらは文字を受け入れます。など

上記の正規表現でうまくいくと思ったのですが、なぜそのような文字を受け入れるのかわかりません。

EDIT

これはまさに私がやっていることです。

 private void OnTextChanged(object sender, EventArgs e)
    {

   if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
        {
            textbox.Text = string.Empty;
        }
    }

これは先ほどの文字を許可しているのです。

解決方法は?

正規表現 ^[0-9] は何にでもマッチします。 始まり のような文字列を含む、数字によるものです。部分一致を避けるには $ を末尾に追加します。

^[0-9]*$

これは、ゼロを含む任意の数の桁を受け入れる。1つ以上の数字を受け入れるには *+ . ちょうど1桁の数字を受け入れるには、単に * .

UPDATE の引数がごちゃごちゃになっています。 IsMatch . パターンは第1引数ではなく、第2引数であるべきです。

if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))

注意 JavaScriptでは \d と同じです。 [0-9] が、.NETでは \d は、デフォルトですべての ユニコード10進数 これには、႒ (Myanmar 2) や߉ (N'Ko 9) のようなエキゾチックな料金も含まれます。アプリがこれらの文字を処理する準備ができていない場合は、次のようにしてください。 [0-9] (または レジェックスオプション.ECMAScript フラグを使用します)。