Дополнительно
Regex, который принимает только цифры (0-9) и символы NO
Мне нужен regex, который будет принимать только цифры от 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;
}
}
Это позволяет персонажам, о которых я говорил выше.
135
1
Ваш регекс
^[0-9]
соответствует всему, что начинается с цифры, включая строки типа "1A". Чтобы избежать частичного совпадения, добавьте$
в конец:Здесь принимается любое количество цифр, включая ни одной. Чтобы принять одну или несколько цифр, замените
*
на+
. Чтобы принять ровно одну цифру, просто удалите*
.UPDATE: Вы перепутали аргументы для
IsMatch
. Шаблон должен быть вторым аргументом, а не первым:ЗАМЕЧАНИЕ: В JavaScript
\d
эквивалентен[0-9]
, но в .NET\d
по умолчанию соответствует любой десятичной цифре Unicode, включая такие экзотические знаки, как ႒ (Мьянма 2) и ߉ (N'Ko 9). Если ваше приложение не готово работать с этими символами, используйте[0-9]
(или установите флаг RegexOptions.ECMAScript).