Использование регулярных выражений в элементе управления MaskedTextBox в Visual Basic
В этом примере показано, как преобразовать простые регулярные выражения для работы с элементом MaskedTextBox управления.
Описание языка маскирования
MaskedTextBox Стандартный язык маскирования основан на том, который используется Masked Edit
элементом управления в Visual Basic 6.0 и должен быть знаком пользователям, перенесенным с этой платформы.
Свойство MaskMaskedTextBox элемента управления указывает, какую маску ввода следует использовать. Маска должна быть строкой, состоящей из одного или нескольких элементов маскирования из следующей таблицы.
Элемент Маскирования | Description | Элемент регулярных выражений |
---|---|---|
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 |
. | Заполнитель десятичного значения, соответствующего языку и региональных параметров. | Недоступна. |
, | Заполнитель тысяч, подходящих для языка и региональных параметров. | Недоступна. |
: | Разделитель времени, соответствующий языку и региональным параметрам. | Недоступна. |
/ | Разделитель даты и региональных параметров. | Недоступна. |
$ | Символ валюты, соответствующий языку и региональных параметров. | Недоступна. |
< | Преобразует все символы, которые следуют за строчным регистром. | Недоступна. |
> | Преобразует все символы, которые следуют за верхним регистром. | Недоступна. |
| | Отменяет предыдущий сдвиг вверх или вниз. | Недоступна. |
\ | Экранирует символ маски, превращая его в литерал. "\\" — это 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. Денежные, тысячные и десятичные символы будут заменены во время выполнения их эквивалентами по языку и региональных параметров. |