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


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

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

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

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

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

Элемент Маскирования Описание Элемент регулярных выражений
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}]
С Характер. Ввод необязателен. [\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}]?
А Буквы и цифры. Ввод необязателен. \W
. Десятичный разделитель, соответствующий локальным нормам. Недоступно.
, Правила использования разделителя тысяч, соответствующие культурным нормам. Недоступно.
: Разделитель времени, соответствующий культурным нормам. Недоступно.
/ Регионально-адаптированный разделитель даты. Недоступно.
$ Символ валюты, подходящий для культуры. Недоступно.
< Преобразует все следующие символы в строчные. Недоступно.
> Преобразует все последующие символы в верхний регистр. Недоступно.
| Отменяет предыдущий сдвиг вверх или вниз. Недоступно.
\ Экранирует символ маски, преобразуя его в обычный текст. "\\\\" — это символ экранирования для обратного слэша. \
Все остальные символы. Литералы. Все элементы, отличные от маски, будут отображаться в пределах 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. Денежные, тысячные и десятичные символы будут заменены во время выполнения их эквивалентами, соответствующими языковым и региональным параметрам.

См. также