Поделиться через


Использование регулярных выражений в элементе управления MaskedTextBox в Visual Basic

В этом примере демонстрируется преобразование простых регулярных выражений для работы с элементом управления MaskedTextBox.

Описание языка масок

Стандартный язык масок MaskedTextBox основан на языке, который используется элементом управления Masked Edit в Visual Basic 6.0 и должен быть знаком пользователям, переходящим с этой платформы.

Свойство Mask элемента управления MaskedTextBox задает используемые маски ввода. Маска должна быть строкой, состоящей из одного или нескольких маскирующих элементов из следующей таблицы.

Элемент маски

Описание

Элемент регулярного выражения

0

Любая цифра от 0 до 9. Ввод обязателен.

\d

9

Цифра или пробел. Ввод не обязателен.

[ \d]?

#

Цифра или пробел. Ввод не обязателен. Если эта позиция в маске пуста, она будет отображена как пробел. Допускаются знаки плюса (+) и минуса (-).

[ \d+-]?

L

Буква в ASCII. Ввод обязателен.

[a-zA-Z]

?

Буква в ASCII. Ввод не обязателен.

[a-zA-Z]?

&

Символ. Ввод обязателен.

[\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}]

C

Символ. Ввод не обязателен.

[\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}]?

A

Алфавитно-цифровые символы. Ввод не обязателен.

\W

.

Соответствующий языку и региональным параметрам десятичный разделитель.

Недоступно.

,

Соответствующий языку и региональным параметрам разделитель тысяч.

Недоступно.

:

Соответствующий языку и региональным параметрам разделитель времени.

Недоступно.

/

Соответствующий языку и региональным параметрам разделитель даты.

Недоступно.

$

Соответствующий языку и региональным параметрам символ валюты.

Недоступно.

<

Преобразует все последующие символы в нижний регистр.

Недоступно.

>

Преобразует все последующие знаки к верхнему регистру.

Недоступно.

|

Отмена предыдущего изменения регистра.

Недоступно.

\

Заменяет символ маски на литерал. " \\" — escape-последовательность для символа обратной косой черты.

\

Все остальные знаки.

Литералы. Все элементы, не являющиеся маской, отображаются в MaskedTextBox без изменений.

Все остальные знаки.

Десятичный разделитель (.), разделитель тысяч (,), времени (:), даты (/) и символы валют ($) по умолчанию отображаются в соответствии с языком и региональными параметрами приложения. Можно принудительно отображать символы для других стран, используя свойство FormatProvider.

Регулярные выражения и маски

Хотя можно использовать регулярные выражения и маски для проверки ввода данных пользователем, они не полностью эквивалентны. Регулярные выражения могут выражать более сложные шаблоны, чем маски, но маски могут выражать одни и те же сведения более четко и в соответствующем языку и региональным параметрам формате.

В следующей таблице сравниваются четыре регулярных выражения и эквивалентная для каждого из них маска.

Регулярное выражение

Маска

Примечания

\d{2}/\d{2}/\d{4}

00/00/0000

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

\d{2}-[A-Z][a-z]{2}-\d{4}

00->L<LL-0000

Дата (день, сокращенное наименование месяца и год) в формате США, в котором отображается трехбуквенное сокращенное наименование месяца, отображается с начальным прописными буквами, за которыми следует две буквы в нижнем регистре.

(\(\d{3}\)-)? \d{3}-d{4}

(999)-000-0000

Номер телефона и код города в США необязательны. Если пользователь не хочет вводить дополнительные символы, он может либо ввести пробелы, или поместите указатель мыши непосредственно на позицию в маске, представленную первым 0.

$\d{6}.00

$999,999.00

Значение валюты в диапазоне от 0 до 999999. Символы денежной единицы, разделителя групп разрядов и десятичного разделителя будут заменены во время выполнения на эквиваленты, соответствующие текущему языку и региональным параметрам.

См. также

Ссылки

Mask

MaskedTextBox

Другие ресурсы

Проверка строк в Visual Basic

Элемент управления MaskedTextBox (Windows Forms)