Ответ 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).