Проверить текстовое поле было указано fomat - PullRequest
0 голосов
/ 28 ноября 2011

Как проверить правильность ввода текстового поля в следующем формате?Формат:

"123dg-erf53-f5d5s-55dh5-gs45j"

Ответы [ 3 ]

1 голос
/ 28 ноября 2011

Вы можете либо использовать MaskedTextBox , либо, если его функциональности недостаточно, создать обработчик для его события TextChanged и использовать регулярное выражение для проверки текста.

0 голосов
/ 28 ноября 2011

Используя регулярные выражения Otiels, вы можете сделать что-то вроде:

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        string regex = "(([0-9a-zA-Z]){5}-){4}([0-9a-zA-Z]){5}";

        this.textBox1.BackColor = Regex.IsMatch(this.textBox1.Text, regex) && !textBox1.Text == string.Empty ?
                            System.Drawing.Color.Green :
                            System.Drawing.Color.Red;
        if (this.textBox1.Text == string.Empty)
        {
            this.textBox1.BackColor = System.Drawing.Color.White;
        }
        else
        {
            this.textBox1.ForeColor = System.Drawing.Color.White;
        }
    }

В обработчике TextBox_TextChanged (мое имя TextBox - textBox1). Это можно легко добавить в пользовательский элемент управления - вы наследуете от TextBox, присоединяетесь к событию TextChanged и заменяете приведенный ниже код textBox1 следующим:

Таким образом, вы можете повторно использовать элемент управления. Вы также можете добавить свойство, такое как открытая строка ValidationRegex {get; задавать; } так что вы можете передавать различные регулярные выражения и иметь возможность проверять что угодно, не только лицензионные ключи.

MaskedTextBox также является допустимым параметром, в зависимости от того, чего именно вам нужно достичь.

Обновление: приведенное выше регулярное выражение будет соответствовать строке, содержащей 5 групп, в каждой из которых по 5 символов, которые могут быть буквой (заглавными или строчными) или цифрой. Поскольку был комментарий по этому поводу, регулярное выражение должно быть изменено для размещения групп с различным количеством символов. Вот оно:

    string regex = "[0-9a-zA-Z]{6}-[0-9a-zA-Z]{5}-[0-9a-zA-Z]{5}-[0-9a-zA-Z]{5}-[0-9a-zA-Z]{6}";

Это регулярное выражение (хотя и намного длиннее, чем тот, который придумал Отиелс) позволит вам контролировать количество символов в каждой группе. Просто замените его в приведенном выше коде, и он должен работать для строки, содержащей группу из 6 символов, за которой следуют две группы по 5 символов, за которыми следует группа из 6 символов. Кстати, это было мое первоначальное предложение (за исключением того, что в первоначальном ответе у меня было по 5 в каждом из квантификаторов), но я действительно предпочел решение Otiels, поскольку оно гораздо более элегантно для первоначальной задачи, чем мое.

0 голосов
/ 28 ноября 2011

Вот регулярное выражение для проверки:

"(([0-9a-zA-Z]){5}-){4}([0-9a-zA-Z]){5}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...