Эта функция проверяет, совпадает ли строка с шаблоном.

Описание

Функция IsMatch проверяет, соответствует ли текстовая строка шаблону, который может содержать обычные символы, предварительно определенные шаблоны или регулярное выражение.

Используйте IsMatch, чтобы проверить, что пользователь ввел в элемент управления ввод текста. Например, можно проверить, ввел ли пользователь допустимый адрес электронной почты, перед сохранением результата в источник данных. Если запись не соответствует условиям, добавьте другие элементы управления, которые напомнят пользователю, что запись необходимо исправить.

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

Если текстовая строка соответствует шаблону, IsMatch возвращает значение true, в противном случае — false.

Шаблоны

Ключом к использованию IsMatch является описание шаблона для сопоставления. Опишите шаблон в текстовой строке в виде следующей комбинации:

  • Обычные символы, такие как abc или 123.
  • Предопределенные шаблоны, такие как Letter, MultipleDigits или Email. (Эти шаблоны определяет перечисление Match.)
  • Коды регулярных выражений, например \d+\s+\d+ или [a-z] +.

Комбинируйте эти элементы с помощью оператора объединения строк &. Например, "abc" & Digit & "\s+" является допустимым шаблоном, который соответствует символам "a", "b" и "c" с последующей цифрой от 0 до 9, за которой следует по крайней мере один пробел.

Обычные символы

Самый простой шаблон — это последовательность из обычных символов, которые должны точно совпадать.

Например, строка "Hello" точно соответствует шаблону Hello. И никак иначе. Строка "hello!" не соответствует шаблону из-за восклицательного знака в конце и неверного регистра буквы "h". (Способы изменения этого поведения см. в разделе Параметры поиска совпадения.)

В языке шаблона некоторые символы зарезервированы для особых целей. Чтобы использовать эти символы, либо используйте перед знаком \ (обратную косую черту), чтобы указать, что символ должен восприниматься буквально, либо используйте один из предопределенных шаблонов. В следующей таблице перечислены специальные символы.

Специальный символ Описание
. точка
? вопросительный знак
* звездочка
+ плюс
( ) круглые скобки
[ ] квадратные скобки
{ } фигурные скобки
^ знак вставки
$ знак доллара
| вертикальная черта
\ обратная косая черта

Например, можно сопоставить "Hello?" с помощью шаблона Hello\? с обратной косой чертой перед вопросительным знаком.

Предопределенные шаблоны

Предопределенные шаблоны предоставляют простой способ сопоставления с одним из наборов символов либо с последовательностью из нескольких символов. Используйте оператор объединения строк &, чтобы объединить собственные текстовые строки с условиями сопоставления:

Условия сопоставления Описание Регулярное выражение
Any Соответствует любому символу. .
Comma Соответствует запятой. ,
Digit Соответствует числу (от 0 до 9). \d
Email Соответствует адресу электронной почты, который содержит символ @ и имя домена с точкой ("."). .+@.+\.[^\.]{2,}
Hyphen Соответствует дефису. \-
LeftParen Соответствует левой круглой скобке "(". \(
Letter Соответствует букве. \p{L}
MultipleDigits Соответствует одной или нескольким цифрам. \d+
MultipleLetters Соответствует одной или нескольким буквам. \p{L}+
MultipleNonSpaces Соответствует одному или нескольким символам, которые не добавляют пробел (пробел, табуляция, новая строка). \S+
MultipleSpaces Соответствует одному или нескольким символам, которые добавляют пробел (пробел, табуляция, новая строка). \s+
NonSpace Соответствует одному знаку, который не добавляет пробел. \S
OptionalDigits Соответствует отсутствующей, одной или нескольким цифрам. \d
OptionalLetters Соответствует отсутствующей, одной или нескольким буквам. \p{L}
OptionalNonSpaces Соответствует отсутствующему, одному или нескольким символам, которые не добавляют пробел. \S
OptionalSpaces Соответствует отсутствующему, одному или нескольким символам, которые добавляют пробел. \s
Period Соответствует точке ("."). \.
RightParen Соответствует правой круглой скобке ")". \)
Space Соответствует символу, который добавляет пробел. \s

Например, шаблон "A" & MultipleDigits будет соответствовать букве "A", за которой следует одна или несколько цифр.

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

Шаблон, используемый функцией IsMatch, является регулярным выражением. Обычные символы и предварительно определенные шаблоны, описанные выше, можно использовать для создания регулярных выражений.

Регулярные выражения очень эффективны и доступны во многих языках программирования для использования в самых разных целях. В данной статье невозможно описать все аспекты регулярных выражений, но в Интернете достаточное количество информации и руководств на эту тему.

Регулярные выражения имеют различные диалекты. В PowerApps используется вариант диалекта JavaScript. Дополнительные сведения см. в статье Regular Expression Syntax (JavaScript) (Синтаксис регулярных выражений (JavaScript)).

В таблице условий сопоставления, приведенной выше, каждое условие разворачивается в регулярное выражение, а текстовая строка в столбце "Регулярные выражения" определяет это выражение.

Параметры сопоставления

Можно изменить поведение IsMatch, указав один или несколько параметров, которые можно комбинировать с помощью оператора объединения строк (&).

По умолчанию IsMatch проверяет всю текстовую строку на полное соответствие.

Параметры сопоставления Описание Влияние на регулярное выражение
BeginsWith Шаблон должен совпадать с самого начала текста. Добавляет ^ в начало регулярного выражения.
Complete По умолчанию. Шаблон должен соответствовать всему тексту от начала и до конца. Добавляет ^ в начало и $ в конец регулярного выражения.
Contains Шаблон должен присутствовать где-нибудь в тексте, но не обязательно в начале или в конце. Не изменяет регулярного выражения.
EndsWith Шаблон должен соответствовать окончанию текста. Добавляет $ в конец регулярного выражения.
IgnoreCase Ищет совпадения без учета регистра. По умолчанию при поиске совпадения учитывается регистр. Не изменяет регулярного выражения.
Multiline Выполняет сопоставление по нескольким строкам. Не изменяет регулярного выражения.

Синтаксис

IsMatch( текст, шаблон [, параметры ] )

  • *Текст* — требуется. Текстовая строка для проверки.
  • *Шаблон* — требуется. Шаблон для проверки в виде текстовой строки. Связывает предопределенные шаблоны, которые определяет перечисление Match, или предоставляет регулярное выражение.
  • *Параметры* — необязательно. Сочетание значений перечисления MatchOptions в виде текстовой строки. По умолчанию используется MatchOptions.Complete.

Примеры

Обычные символы

Представьте, что приложение содержит элемент управления ввода текста с именем TextInput1. Пользователь вводит значения в этот элемент управления для сохранения в базе данных.

Пользователь вводит в элемент TextInput1 Hello world.

Формула Описание Возвращаемый результат
IsMatch( TextInput1.Text, "Hello world" ) Проверяет, точно ли введенные данные соответствуют строке "Hello world". true
IsMatch( TextInput1.Text, "Good bye" ) Проверяет, точно ли введенные данные соответствуют строке "Good bye". false
IsMatch( TextInput1.Text, "hello", Contains ) Проверяет, содержат ли введенные данные слово "hello" (с учетом регистра). false
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Проверяет, содержат ли введенные данные слово "hello" (без учета регистра). true

Предопределенные шаблоны

Формула Описание Возвращаемый результат
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit & Digit ) Соответствует номеру социального страхования США. true
IsMatch( "joan@contoso.com", Email ) Соответствует адресу электронной почты. true
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Соответствует последовательности цифр, за которыми следует точка, а затем отсутствующая цифра или другие цифры. true
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Соответствует последовательности цифр, за которыми следует точка, а затем отсутствующая цифра или другие цифры. Точки в тексте нет, поэтому нет соответствия с этим шаблоном. false

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

Формула Описание Возвращаемый результат
IsMatch( "986", "\d+" ) Соответствует целому числу больше нуля. true
IsMatch( "1.02", "\d+(.\d\d)?" ) Обозначает положительную денежную сумму. Если входные данные содержат десятичный разделитель, после него также должны стоять 2 цифры. Например, 3.00 является допустимым значением, а 3.1 — нет. true
IsMatch( "-4.95", "(-)?\d+(.\d\d)?" ) Обозначает положительную или отрицательную денежную сумму. Если входные данные содержат десятичный разделитель, после него также должны стоять 2 цифры. true
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Соответствует номеру социального страхования США. Проверяет формат, тип и длину указанного поля ввода. Сопоставляемая строка должна состоять из 3 цифр, за которыми идет дефис, 2 цифры, дефис и еще 4 цифры. true
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Аналогично предыдущему примеру, но во входных данных отсутствует один из дефисов. false
IsMatch( "weakpassword", "(?!^[0-9]*$)(?!^[a-zA-Z]*$)([a-zA-Z0-9]{8,10})" ) Проверяет надежность пароля, который должен содержать 8, 9 или 10 символов, минимум одну цифру и по крайней мере одну букву. Строка не должна содержать специальные символы. false
IsMatch( "http://microsoft.com", "(ht|f)tp(s?):\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9-.\?\,\'\/\+&%\$#_]*)?" ) Проверяет URL-адрес HTTP, HTTPS или FTP. true