Функция IsMatch в PowerAppsIsMatch function in PowerApps

Эта функция проверяет, совпадает ли строка с шаблоном.Tests whether a text string matches a pattern.

ОписаниеDescription

Функция IsMatch проверяет, соответствует ли текстовая строка шаблону, который может содержать обычные символы, предварительно определенные шаблоны или регулярное выражение.The IsMatch function tests whether a text string matches a pattern that can comprise ordinary characters, predefined patterns, or a regular expression.

Используйте IsMatch, чтобы проверить, что пользователь ввел в элемент управления ввод текста.Use IsMatch to validate what a user has typed in a Text input control. Например, можно проверить, ввел ли пользователь допустимый адрес электронной почты, перед сохранением результата в источник данных.For example, you can confirm whether the user has entered a valid email address before the result is saved to your data source. Если запись не соответствует условиям, добавьте другие элементы управления, которые напомнят пользователю, что запись необходимо исправить.If the entry doesn't match your criteria, add other controls that prompt the user to correct the entry.

По умолчанию IsMatch выполняет сопоставление с учетом регистра для всей строки текста.By default, IsMatch performs a case-sensitive match for the entire text string. Это поведение можно изменить, указав один или несколько параметров сопоставления.You can modify this behavior by specifying one or more MatchOptions.

Если текстовая строка соответствует шаблону, IsMatch возвращает значение true, в противном случае — false.IsMatch returns true if the text string matches the pattern or false if it doesn't.

ШаблоныPatterns

Ключом к использованию IsMatch является описание шаблона для сопоставления.The key to using IsMatch is in describing the pattern to match. Опишите шаблон в текстовой строке в виде следующей комбинации:You describe the pattern in a text string as a combination of:

  • Обычные символы, такие как abc или 123.Ordinary characters, such as "abc" or "123".
  • Предопределенные шаблоны, такие как Letter, MultipleDigits или Email.Predefined patterns, such as Letter, MultipleDigits, or Email. (Эти шаблоны определяет перечисление Match.)(The Match enum defines these patterns.)
  • Коды регулярных выражений, например \d+\s+\d+ или [a-z] +.Regular expressions codes, such as "\d+\s+\d+" or "[a-z]+".

Комбинируйте эти элементы с помощью оператора объединения строк &.Combine these elements by using the string concatenation operator &. Например, "abc" & Digit & "\s+" является допустимым шаблоном, который соответствует символам "a", "b" и "c" с последующей цифрой от 0 до 9, за которой следует по крайней мере один пробел.For example, "abc" & Digit & "\s+" is a valid pattern that matches the characters "a", "b", and "c", followed by a digit from 0 to 9, followed by at least one whitespace character.

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

Самый простой шаблон — это последовательность из обычных символов, которые должны точно совпадать.The simplest pattern is a sequence of ordinary characters to be matched exactly.

Например, строка "Hello" точно соответствует шаблону Hello.For example, the string "Hello" matches the pattern "Hello" exactly. И никак иначе.No more and no less. Строка "hello!"The string "hello!" не соответствует шаблону из-за восклицательного знака в конце и неверного регистра буквы "h".doesn't match the pattern because of the exclamation point on the end and the case is wrong for the letter "h". (Способы изменения этого поведения см. в разделе Параметры поиска совпадения.)(See MatchOptions for ways to modify this behavior.)

В языке шаблона некоторые символы зарезервированы для особых целей.In the pattern language, certain characters are reserved for special purposes. Чтобы использовать эти символы, либо используйте перед знаком \ (обратную косую черту), чтобы указать, что символ должен восприниматься буквально, либо используйте один из предопределенных шаблонов.To use these characters, either prefix the character with a \ (backslash) to indicate that the character should be taken literally or use one of the predefined patterns. В следующей таблице перечислены специальные символы.This table lists the special characters:

Специальный символSpecial character ОписаниеDescription
.. точкаdot or period
?? вопросительный знакquestion mark
** звездочкаasterisk
+ плюсplus
( )( ) круглые скобкиparenthesis
[ ][ ] квадратные скобкиsquare brackets
{ }{ } фигурные скобкиcurly braces
^ знак вставкиcaret
$ знак доллараdollar sign
|| вертикальная чертаvertical bar or pipe
\ обратная косая чертаbackslash

Например, можно сопоставить "Hello?"For example, you can match "Hello?" с помощью шаблона Hello\?by using the pattern "Hello\?" с обратной косой чертой перед вопросительным знаком.with a backslash before the question mark.

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

Предопределенные шаблоны предоставляют простой способ сопоставления с одним из наборов символов либо с последовательностью из нескольких символов.Predefined patterns provide a simple way to match one of a set of characters, or a sequence of multiple characters. Используйте оператор объединения строк &, чтобы объединить собственные текстовые строки с условиями сопоставления:Use the string concatenation operator & to combine your own text strings with members of the Match enum:

Условия сопоставленияMatch Enum ОписаниеDescription Регулярное выражениеRegular Expression
AnyAny Соответствует любому символу.Matches any character. ..
CommaComma Соответствует запятой.Matches a comma. ,,
DigitDigit Соответствует числу (от 0 до 9).Matches a single digit ("0" through "9"). \d\d
EmailEmail Соответствует адресу электронной почты, который содержит символ @ и имя домена с точкой (".").Matches an email address that contains an "at" symbol ("@") and a domain name that contains a dot (".") .+@.+\.[^\.]{2,}.+@.+\.[^\.]{2,}
HyphenHyphen Соответствует дефису.Matches a hyphen. \-
LeftParenLeftParen Соответствует левой круглой скобке "(".Matches a left parenthesis "(". \(\(
LetterLetter Соответствует букве.Matches a letter. \p{L}\p{L}
MultipleDigitsMultipleDigits Соответствует одной или нескольким цифрам.Matches one or more digitis. \d+\d+
MultipleLettersMultipleLetters Соответствует одной или нескольким буквам.Matches one or more letters. \p{L}+\p{L}+
MultipleNonSpacesMultipleNonSpaces Соответствует одному или нескольким символам, которые не добавляют пробел (пробел, табуляция, новая строка).Matches one or more characters that don't add whitespace (space, tab, newline). \S+\S+
MultipleSpacesMultipleSpaces Соответствует одному или нескольким символам, которые добавляют пробел (пробел, табуляция, новая строка).Matches one or more characters that add whitespace (space, tab, newline). \s+\s+
NonSpaceNonSpace Соответствует одному знаку, который не добавляет пробел.Matches a single character that doesn't add whitespace. \S\S
OptionalDigitsOptionalDigits Соответствует отсутствующей, одной или нескольким цифрам.Matches zero, one, or more digits. \d\d
OptionalLettersOptionalLetters Соответствует отсутствующей, одной или нескольким буквам.Matches zero, one, or more letters. \p{L}\p{L}
OptionalNonSpacesOptionalNonSpaces Соответствует отсутствующему, одному или нескольким символам, которые не добавляют пробел.Matches zero, one, or more characters that don't add whitespace. \S\S
OptionalSpacesOptionalSpaces Соответствует отсутствующему, одному или нескольким символам, которые добавляют пробел.Matches zero, one, or more characters that add whitespace. \s\s
PeriodPeriod Соответствует точке (".").Matches a period or dot ("."). \.\.
RightParenRightParen Соответствует правой круглой скобке ")".Matches a right parenthesis ")". \)\)
SpaceSpace Соответствует символу, который добавляет пробел.Matches a character that adds whitespace. \s\s

Например, шаблон "A" & MultipleDigits будет соответствовать букве "A", за которой следует одна или несколько цифр.For example, the pattern "A" & MultipleDigits will match the letter "A" followed by one or more digits.

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

Шаблон, используемый функцией IsMatch, является регулярным выражением.The pattern used by IsMatch is a regular expression. Обычные символы и предварительно определенные шаблоны, описанные выше, можно использовать для создания регулярных выражений.The ordinary characters and predefined patterns that are described above help build regular expressions.

Регулярные выражения очень эффективны и доступны во многих языках программирования для использования в самых разных целях.Regular expressions are very powerful, available in many programming languages, and used for a wide variety of purposes. В данной статье невозможно описать все аспекты регулярных выражений, но в Интернете достаточное количество информации и руководств на эту тему.This article can't describe all aspects of regular expressions, but a wealth of information and tutorials are published on the web to aid you.

Регулярные выражения имеют различные диалекты. В PowerApps используется вариант диалекта JavaScript.Regular expressions have different dialects, and PowerApps uses a variant of the JavaScript dialect. Дополнительные сведения см. в статье Regular Expression Syntax (JavaScript) (Синтаксис регулярных выражений (JavaScript)).For more information, see regular expression syntax.

В таблице условий сопоставления, приведенной выше, каждое условие разворачивается в регулярное выражение, а текстовая строка в столбце "Регулярные выражения" определяет это выражение.In the Match enum table above, each enum expands into a regular expression, and the text string in the "Regular Expression" column defines that expression.

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

Можно изменить поведение IsMatch, указав один или несколько параметров, которые можно комбинировать с помощью оператора объединения строк (&).You can modify the behavior of IsMatch by specifying one or more options, which you can combine by using the string concatenation operator (&).

По умолчанию IsMatch проверяет всю текстовую строку на полное соответствие.By default, IsMatch tests for a complete match of the entire text string.

Параметры сопоставленияMatchOptions Enum ОписаниеDescription Влияние на регулярное выражениеImpact on regular expression
BeginsWithBeginsWith Шаблон должен совпадать с самого начала текста.The pattern must match from the beginning of the text. Добавляет ^ в начало регулярного выражения.Adds a ^ to the start of the regular expression.
CompleteComplete По умолчанию.Default. Шаблон должен соответствовать всему тексту от начала и до конца.The pattern must match the entire text, from beginning to end. Добавляет ^ в начало и $ в конец регулярного выражения.Adds a ^ to the start and $ to the end of the regular expression.
ContainsContains Шаблон должен присутствовать где-нибудь в тексте, но не обязательно в начале или в конце.The pattern must appear somewhere in the text but doesn't need to begin or end it. Не изменяет регулярного выражения.Doesn't modify the regular expression.
EndsWithEndsWith Шаблон должен соответствовать окончанию текста.The pattern must match the end of the text. Добавляет $ в конец регулярного выражения.Adds a $ to the end of the regular expression.
IgnoreCaseIgnoreCase Ищет совпадения без учета регистра.Treats the matching of letters in a case-insensitive manner. По умолчанию при поиске совпадения учитывается регистр.By default, matching is case sensitive. Не изменяет регулярного выражения.Doesn't modify the regular expression.
MultilineMultiline Выполняет сопоставление по нескольким строкам.Matches across multiple lines. Не изменяет регулярного выражения.Doesn't modify the regular expression.

СинтаксисSyntax

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

  • Текст — требуется.Text – Required. Текстовая строка для проверки.The text string to test.
  • Шаблон — требуется.Pattern – Required. Шаблон для проверки в виде текстовой строки.The pattern to test, as a text string. Связывает предопределенные шаблоны, которые определяет перечисление Match, или предоставляет регулярное выражение.Concatenate predefined patterns that the Match enum defines or provide a regular expression.
  • Параметры — необязательно.Options – Optional. Сочетание значений перечисления MatchOptions в виде текстовой строки.A text string combination of MatchOptions enum values. По умолчанию используется MatchOptions.Complete.By default, MatchOptions.Complete is used.

ПримерыExamples

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

Представьте, что приложение содержит элемент управления ввода текста с именем TextInput1.Imagine that your app contains a Text input control named TextInput1. Пользователь вводит значения в этот элемент управления для сохранения в базе данных.The user enters values into this control to be stored in a database.

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

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
IsMatch( TextInput1.Text, "Hello world" )IsMatch( TextInput1.Text, "Hello world" ) Проверяет, точно ли введенные данные соответствуют строке "Hello world".Tests whether the user's input matches, exactly, the string "Hello world" truetrue
IsMatch( TextInput1.Text, "Good bye" )IsMatch( TextInput1.Text, "Good bye" ) Проверяет, точно ли введенные данные соответствуют строке "Good bye".Tests whether the user's input matches, exactly, the string "Good bye" falsefalse
IsMatch( TextInput1.Text, "hello", Contains )IsMatch( TextInput1.Text, "hello", Contains ) Проверяет, содержат ли введенные данные слово "hello" (с учетом регистра).Tests whether the user's input contains the word "hello" (case sensitive). falsefalse
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase )IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Проверяет, содержат ли введенные данные слово "hello" (без учета регистра).Tests whether the user's input contains the word "hello" (case insensitive). truetrue

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

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit & Digit )IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit & Digit ) Соответствует номеру социального страхования США.Matches a United States Social Security Number truetrue
IsMatch( "joan@contoso.com", Email )IsMatch( "joan@contoso.com", Email ) Соответствует адресу электронной почты.Matches an email address truetrue
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits )IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Соответствует последовательности цифр, за которыми следует точка, а затем отсутствующая цифра или другие цифры.Matches a sequence of digits, a period, and then zero or more digits. truetrue
IsMatch( "123", MultipleDigits & Period & OptionalDigits )IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Соответствует последовательности цифр, за которыми следует точка, а затем отсутствующая цифра или другие цифры.Matches a sequence of digits, a period, and then zero or more digits. Точки в тексте нет, поэтому нет соответствия с этим шаблоном.A period doesn't appear in the text, so this pattern isn't matched. falsefalse

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

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
IsMatch( "986", "\d+" )IsMatch( "986", "\d+" ) Соответствует целому числу больше нуля.Matches a an integer greater than zero. truetrue
IsMatch( "1.02", "\d+(.\d\d)?" )IsMatch( "1.02", "\d+(.\d\d)?" ) Обозначает положительную денежную сумму.Matches a positive currency amount. Если входные данные содержат десятичный разделитель, после него также должны стоять 2 цифры.If the input contains a decimal point, the input must also contain 2 numeric characters after the decimal point. Например, 3.00 является допустимым значением, а 3.1 — нет.For example, 3.00 is valid, but 3.1 isn't. truetrue
IsMatch( "-4.95", "(-)?\d+(.\d\d)?" )IsMatch( "-4.95", "(-)?\d+(.\d\d)?" ) Обозначает положительную или отрицательную денежную сумму.Matches a positive or negative currency amount. Если входные данные содержат десятичный разделитель, после него также должны стоять 2 цифры.If the input contains a decimal point, the input must also contain 2 numeric characters after the decimal point. truetrue
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" )IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Соответствует номеру социального страхования США.Matches a United States Social Security number. Проверяет формат, тип и длину указанного поля ввода.Validates the format, type, and length of the supplied input field. Сопоставляемая строка должна состоять из 3 цифр, за которыми идет дефис, 2 цифры, дефис и еще 4 цифры.The string to match must consist of 3 numeric characters followed by a dash, then 2 numeric characters followed by a dash, and then 4 numeric characters. truetrue
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" )IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Аналогично предыдущему примеру, но во входных данных отсутствует один из дефисов.Same as the previous example, but one of the hyphens is out of place in the input. falsefalse
IsMatch( "weakpassword", "(?!^[0-9]*$)(?!^[a-zA-Z]*$)([a-zA-Z0-9]{8,10})" )IsMatch( "weakpassword", "(?!^[0-9]*$)(?!^[a-zA-Z]*$)([a-zA-Z0-9]{8,10})" ) Проверяет надежность пароля, который должен содержать 8, 9 или 10 символов, минимум одну цифру и по крайней мере одну букву.Validates a strong password, which must contain 8, 9, or 10 characters, in addition to at least one digit and at least one alphabetic character. Строка не должна содержать специальные символы.The string must not contain special characters. falsefalse
IsMatch( "http://microsoft.com", "(ht|f)tp(s?)://[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(/?)([a-zA-Z0-9-.?,'/\+&%$#_]*)?" )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.Validates an http, https, or ftp URL. truetrue