Regex, который принимает только числа (0-9) и символы NO

Мне нужно регулярное выражение, которое будет принимать только цифры от 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;
        }
    }

Это позволяет использовать символы, упомянутые выше.

Ответ 1

Ваше регулярное выражение ^[0-9] соответствует любому значению, начинающемуся с цифры, включая строки типа "1A". Чтобы избежать частичного совпадения, добавьте $ в конец:

^[0-9]*$

Это принимает любое количество цифр, в том числе ни одного. Чтобы принять одну или несколько цифр, измените значение * на +. Чтобы принять ровно одну цифру, просто удалите *.

ОБНОВЛЕНИЕ: Вы перепутали аргументы с IsMatch. Шаблон должен быть вторым аргументом, а не первым:

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

ВНИМАНИЕ:. В JavaScript \d эквивалентно [0-9], но в .NET, \d по умолчанию соответствует любой десятичной цифре Unicode, включая экзотические тарифы, такие как 2 (Мьянма 2) и ߉ (N'Ko 9). Если ваше приложение не готово справиться с этими символами, придерживайтесь [0-9] (или поставьте флаг RegexOptions.ECMAScript).