テキスト文字列がパターンに一致するかどうかをテストします。

説明

IsMatch 関数は、通常文字、事前定義済みのパターン、または正規表現が含まれたパターンにテキスト文字列が一致するかどうかをテストします。

IsMatch は、ユーザーがテキスト入力コントロールに入力した内容を検証するために使用されます。 たとえば、データ ソースに保存する前に、ユーザーが入力した電子メール アドレスが有効かどうかを確認できます。 エントリが基準に一致しない場合、エントリの修正をユーザーに求める他のコントロールを表示します。

IsMatch で実行される既定の照合では、すべてのテキスト文字列の大文字と小文字が区別されます。 この動作は、1 つ以上の MatchOptions を指定することで変更できます。

IsMatch は、テキスト文字列がパターンに一致する場合は true を返し、一致しない場合は false を返します。

パターン

IsMatch を使用する際には、照合に使用されるパターンを記述することが重要です。 パターンは、以下を組み合わせたテキスト文字列で記述します。

  • 通常文字 ("abc""123" など)。
  • 事前定義済みのパターン (LetterMultipleDigitsEmail など。 これらのパターンは Match 列挙型によって定義されます)。
  • 正規表現コード ("\d+\s+\d+""[a-z]+" など)。

これらの要素は、文字列連結演算子&を使用して組み合わせることができます。 たとえば、"abc" & Digit & "\s+" は有効なパターンであり、後ろに 0 から 9 までの数字と少なくとも 1 つの空白文字が付いた文字 "a"、"b"、"c" に一致します。

通常文字

最も単純なパターンは、通常文字で構成された文字列です。この場合、パターンと文字列は完全に一致する必要があります。

たとえば、文字列 "Hello" はパターン "Hello" に正確に一致しており、 過不足がありません。 文字列 "hello!" は このパターンに一致しません。これは、末尾に感嘆符が付いており、文字 "h" が小文字であるためです (この動作を変更する方法については「MatchOptions」を参照してください)。

パターンの言語では、特別な目的で予約されている文字があります。 これらの文字を使用するには、文字の前に \ (バックスラッシュ) を付けて文字がそのとおりに解釈されるようにするか、事前定義済みのいずれかのパターンを使用します。 次の表に、特殊文字の一覧を示します。

特殊文字 説明
. ドットまたはピリオド
? 疑問符
* アスタリスク
+ プラス
( ) 丸かっこ
[ ] 角かっこ
{ } 中かっこ
^ キャレット
$ ドル記号
| 縦棒またはパイプ
\ バックスラッシュ

たとえば、"Hello?" を一致の対象にするには、 疑問符の前にバックスラッシュを付けたパターン "Hello\?" を 使用します。

事前定義済みのパターン

事前定義済みのパターンを使用すると、文字のセットの 1 つを簡単に照合できるほか、一連の複数の文字を簡単に照合できます。 文字列連結演算子&を使用して、独自のテキスト文字列と Match 列挙型のメンバーを組み合わせます。

Match 列挙型 説明 正規表現
Any 任意の文字と一致します。 .
Comma コンマと一致します。 ,
Digit 1 桁の数と一致します ("0" ~ "9")。 \d
Email ピリオド (".") が付いたドメイン名と "at" 記号 ("@") が含まれている電子メール アドレスと一致します。 .+@.+\.[^\.]{2,}
Hyphen ハイフンと一致します。 \-
LeftParen 左丸かっこ "(" と一致します。 \(
Letter 1 つの文字と一致します。 \p{L}
MultipleDigits 1 桁以上の数と一致します。 \d+
MultipleLetters 1 つ以上の文字と一致します。 \p{L}+
MultipleNonSpaces 空白文字 (スペース、タブ、改行) を含まない 1 つ以上の文字と一致します。 \S+
MultipleSpaces 空白文字 (スペース、タブ、改行) を含む 1 つ以上の文字と一致します。 \s+
NonSpace 空白文字を含まない 1 つの文字と一致します。 \S
OptionalDigits 0 個の数、または 1 桁以上の数と一致します。 \d
OptionalLetters 0 個以上の文字と一致します。 \p{L}
OptionalNonSpaces 空白文字を含まない 0 個以上の文字と一致します。 \S
OptionalSpaces 空白文字を含む 0 個以上の文字と一致します。 \s
Period ピリオドまたはドット (".") と一致します。 \.
RightParen 右丸かっこ ")" と一致します。 \)
Space 空白文字を含む 1 つの文字と一致します。 \s

たとえば、パターン "A" & MultipleDigits は、後ろに 1 桁以上の数が続く文字 "A" と一致します。

正規表現

IsMatch で使用されるパターンは "正規表現" です。 上記の通常文字と事前定義済みのパターンは、正規表現の作成に役立ちます。

正規表現は非常に強力で、多数のプログラミング言語に対応しているうえ、さまざまな用途に使用できます。 この記事では、正規表現のすべての点について説明することはできません。しかし、役に立つ情報とチュートリアルが Web 上で多数公開されています。

正規表現にはさまざまな方言があり、PowerApps では JavaScript の方言の一種を使用します。 詳細については、正規表現の構文に関するページを参照してください。

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

MatchOptions

IsMatch の動作は、1 つ以上のオプションを指定して変更することができます。これらのオプションは文字列連結演算子 (&) を使用して組み合わせることができます。

IsMatch では、テキスト文字列全体が完全に一致しているかどうかが既定でテストされます。

MatchOptions 列挙型 説明 正規表現への影響
BeginsWith パターンはテキストの先頭から一致する必要があります。 正規表現の先頭に ^ が追加されます。
Complete 既定値。 パターンは、先頭から末尾までテキストと完全に一致する必要があります。 正規表現の先頭に ^、末尾に $ が追加されます。
Contains パターンは、テキストの一部と一致する必要がありますが、一致する場所が先頭か末尾である必要はありません。 正規表現は変更されません。
EndsWith パターンはテキストの末尾と一致する必要があります。 正規表現の末尾に $ が追加されます。
IgnoreCase 大文字と小文字を区別せずに文字の照合を実行します。 既定では、照合で大文字と小文字が区別されます。 正規表現は変更されません。
Multiline 複数の行にまたがって照合を実行します。 正規表現は変更されません。

構文

IsMatch( Text, Pattern [, Options ] )

  • Text - 必須。 テストの対象となるテキスト文字列。
  • Pattern - 必須。 テストに使用するパターン (テキスト文字列として入力)。 Match 列挙型で定義された事前定義済みのパターンを結合するか、正規表現を入力します。
  • Options - 省略可能。 MatchOptions 列挙値を組み合わせたテキスト文字列。 既定では MatchOptions.Complete が使用されます。

通常文字

ここでは、TextInput1 という名前のテキスト入力コントロールがアプリにあり、 ユーザーがこのコントロールに値を入力すると、それがデータベースに格納されると仮定します。

今、ユーザーによって TextInput1Hello 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 ) 一連の数字、ピリオド、0 個以上の数字と一致します。 true
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) 一連の数字、ピリオド、0 個以上の数字と一致します。 テキストにピリオドが含まれていないため、このパターンは一致しません。 false

正規表現

数式 説明 結果
IsMatch( "986", "\d+" ) 1 以上の整数と一致します。 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}" ) 前の例と同じですが、入力内のハイフンの位置が 1 つ異なります。 false
IsMatch( "weakpassword", "(?!^[0-9]*$)(?!^[a-zA-Z]*$)([a-zA-Z0-9]{8,10})" ) 強力なパスワードを検証します。このパスワードには、最低 1 つの数字と最低 1 つの英文字が含まれている必要があるほか、文字数が 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-.\?\,\'\/\+&%\$#_]*)?" ) http、https、または ftp の URL を検証します。 true