PowerApps の IsMatch 関数IsMatch 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. この動作は、1 つ以上の MatchOptions を指定することで変更できます。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".
  • 事前定義済みのパターン (LetterMultipleDigitsEmail など。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+" は有効なパターンであり、後ろに 0 から 9 までの数字と少なくとも 1 つの空白文字が付いた文字 "a"、"b"、"c" に一致します。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". (この動作を変更する方法については「MatchOptions」を参照してください)。(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

事前定義済みのパターンを使用すると、文字のセットの 1 つを簡単に照合できるほか、一連の複数の文字を簡単に照合できます。Predefined patterns provide a simple way to match one of a set of characters, or a sequence of multiple characters. 文字列連結演算子&を使用して、独自のテキスト文字列と Match 列挙型のメンバーを組み合わせます。Use the string concatenation operator & to combine your own text strings with members of the Match enum:

Match 列挙型Match Enum 説明Description 正規表現Regular Expression
AnyAny 任意の文字と一致します。Matches any character. ..
CommaComma コンマと一致します。Matches a comma. ,,
DigitDigit 1 桁の数と一致します ("0" ~ "9")。Matches a single digit ("0" through "9"). \d\d
EmailEmail ピリオド (".") が付いたドメイン名と "at" 記号 ("@") が含まれている電子メール アドレスと一致します。</span><span class="sxs-lookup">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 1 つの文字と一致します。Matches a letter. \p{L}\p{L}
MultipleDigitsMultipleDigits 1 桁以上の数と一致します。Matches one or more digitis. \d+\d+
MultipleLettersMultipleLetters 1 つ以上の文字と一致します。Matches one or more letters. \p{L}+\p{L}+
MultipleNonSpacesMultipleNonSpaces 空白文字 (スペース、タブ、改行) を含まない 1 つ以上の文字と一致します。Matches one or more characters that don't add whitespace (space, tab, newline). \S+\S+
MultipleSpacesMultipleSpaces 空白文字 (スペース、タブ、改行) を含む 1 つ以上の文字と一致します。Matches one or more characters that add whitespace (space, tab, newline). \s+\s+
NonSpaceNonSpace 空白文字を含まない 1 つの文字と一致します。Matches a single character that doesn't add whitespace. \S\S
OptionalDigitsOptionalDigits 0 個の数、または 1 桁以上の数と一致します。Matches zero, one, or more digits. \d\d
OptionalLettersOptionalLetters 0 個以上の文字と一致します。Matches zero, one, or more letters. \p{L}\p{L}
OptionalNonSpacesOptionalNonSpaces 空白文字を含まない 0 個以上の文字と一致します。Matches zero, one, or more characters that don't add whitespace. \S\S
OptionalSpacesOptionalSpaces 空白文字を含む 0 個以上の文字と一致します。Matches zero, one, or more characters that add whitespace. \s\s
PeriodPeriod ピリオドまたはドット (".") と一致します。Matches a period or dot ("."). \.\.
RightParenRightParen 右丸かっこ ")" と一致します。Matches a right parenthesis ")". \)\)
SpaceSpace 空白文字を含む 1 つの文字と一致します。Matches a character that adds whitespace. \s\s

たとえば、パターン "A" & MultipleDigits は、後ろに 1 桁以上の数が続く文字 "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. この記事では、正規表現のすべての点について説明することはできません。しかし、役に立つ情報とチュートリアルが Web 上で多数公開されています。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. 詳細については、正規表現の構文に関するページを参照してください。For more information, see regular expression syntax.

上記の Match 列挙型の表では、各列挙型に加えて正規表現が記載されており、"正規表現" 列のテキスト文字列でその正規表現が定義されています。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.

MatchOptionsMatch options

IsMatch の動作は、1 つ以上のオプションを指定して変更することができます。これらのオプションは文字列連結演算子 (&) を使用して組み合わせることができます。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 列挙型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( Text, Pattern [, Options ] )IsMatch( Text, Pattern [, Options ] )

  • Text - 必須。Text – Required. テストの対象となるテキスト文字列。The text string to test.
  • Pattern - 必須。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 - 省略可能。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.

今、ユーザーによって TextInput1Hello 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 ) 一連の数字、ピリオド、0 個以上の数字と一致します。Matches a sequence of digits, a period, and then zero or more digits. truetrue
IsMatch( "123", MultipleDigits & Period & OptionalDigits )IsMatch( "123", MultipleDigits & Period & OptionalDigits ) 一連の数字、ピリオド、0 個以上の数字と一致します。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+" ) 1 以上の整数と一致します。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}" ) 前の例と同じですが、入力内のハイフンの位置が 1 つ異なります。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})" ) 強力なパスワードを検証します。このパスワードには、最低 1 つの数字と最低 1 つの英文字が含まれている必要があるほか、文字数が 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-.?,'/\+&%$#_]\*)?" ) http、https、または ftp の URL を検証します。Validates an http, https, or ftp URL. truetrue