今回の記事では、正規表現を使った入力バリデーションを実現する方法をお伝えしていきます。
フロー内で正規表現を利用しようとすると複雑になりがちですが (解説記事はこちら) 、アダプティブカード入力時のバリデーション機能を使うことでシンプルに実装することができます。
よく使うバリデーションパターンも一覧でまとめていますので、ぜひコピペしてご活用ください。
完成イメージ
Teamsに届いたアダプティブカードに不適切なメールアドレスを入力して送信しようとすると、
エラーメッセージが表示されて送信できないように制御してくれます。
サンプルフローの作成
フロー全体像
トリガー設定
今回は手動トリガー、名前は任意ですが「正規表現バリデーションサンプル」としました。
アダプティブカード送信アクションの設定
Teamsコネクタの「アダプティブ カードを投稿して応答を待機する」アクションを追加します。
投稿者・投稿先・Recipientは任意で構いませんが、今回は以下のように設定しました。
Messageには、以下のアダプティブカードJSONを入力します。
{
"type": "AdaptiveCard",
"version": "1.3",
"body": [
{
"type": "TextBlock",
"text": "入力フォーム",
"size": "large",
"weight": "bolder"
},
{
"type": "Input.Text",
"id": "メールアドレス",
"label": "メールアドレス",
"placeholder": "例)sample@example.com",
"regex": "^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$",
"errorMessage": "正しいメールアドレスの形式で入力してください",
"isRequired": true
}
],
"actions": [
{
"type": "Action.Submit",
"title": "送信"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
}
特に以下の部分が正規表現に関わる部分です。
3章のよく使う正規表現パターンを参考に、変更しながら動きを確認すると理解が深まります。
作成アクションの設定
ユーザーがアダプティブカードに入力した内容は、その後のアクション内で動的なコンテンツとして利用できます。
今回は作成アクションを配置して、その中に動的なコンテンツを追加しました。
よく使う正規表現パターン
よく使いそうな正規表現のパターンを以下にまとめました。
あくまで例のため、ご自身でチェックしてからご利用ください(アダプティブカードのregex部分に入力してください)。
| 許可する値 | 正規表現 | エラーメッセージ |
|---|---|---|
| 英数字のみ | ^[a-zA-Z0-9]+$ | 半角英数字のみ入力してください |
| 整数のみ | ^\\d+$ | 半角数字のみで入力してください |
| 数値 (小数点対応) | ^\\d+(\\.\\d+)?$ | 数値形式で入力してください |
| 日付 (YYYY/MM/DD) | ^\\d{4}/\\d{2}/\\d{2}$ | YYYY/MM/DD形式で入力してください |
| メールアドレス | ^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$ | 正しいメールアドレスを入力してください |
| 郵便番号 | ^\\d{3}-?\\d{4}$ | 郵便番号形式(123-4567)で入力してください |
注意事項
利用にあたっていくつか注意事項があるため記載します。
regex プロパティは Input.Text のみ対応
regex プロパティが使えるのは Input.Text (文字列型) に限られます。Input.Number (数値型) など他の入力タイプには使用できませんのでご注意ください。
クライアント側のバリデーションである点に注意
アダプティブカードのバリデーションはあくまでもカード送信前のクライアント側での検証です。
フロー側(サーバー側)での検証ではないため、厳密な制御が必要な場合はフロー側でも合わせてチェックすることをおすすめします。
Teamsのバージョンによって挙動が異なる場合がある
TeamsアプリのバージョンやOSによっては、バリデーションの挙動が異なる場合があります。実装後は実際のTeams環境での動作確認を行うようにしてください。
まとめ
今回の記事では、アダプティブカードの正規表現バリデーション機能についてお伝えしました。
Power Automate内では正規表現を扱いづらいため、アダプティブカードのバリデーション機能を使うことでシンプルに実装してみてください。
また、Power Automate内で正規表現に一致するかを確認したい場合は、以下の記事も参考になります。











