テキストの一致を確認

メールアドレスの書式が間違えていたらエラーを表示させたく、テキストの一致を確認アクティビティでメールアドレスを条件にしましたが、間違えていても通ってしまものがあり困っています。
@docomo\ne.jp falseになる
@docomo.ne\jp trueになる

カンマなどにしても同じ結果でした。
他のyahooのアドレスでも同じことがあり、かと思えば同じyahooのアドレスでもどこを変えてもfalseになるものもありました。法則がバラバラなのでわかりません。
この場合どのようにしたら良いのでしょうか?

uipathのメールアドレスで出てくる正規表現です。どこかに何かを足したら良いのでしょうか?
((?>[a-zA-Z\d!#$%&'+-/=?^_{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-\/=?^_{|}~]+)+|“((?=[\x01-\x7f])[^”\]|\[\x01-\x7f])")@(((?!-)[a-zA-Z\d-]+(?<!-).)+[a-zA-Z]{2,}|[(((?(?<![).)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\]|\[\x01-\x7f])+)])(?(angle)>)

@sayaka.y

Please try this

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

This assumes you have only email passing in and no other string…if you have more…then to properly validate use your expression to extract the email part and the given expression to validate if the extracted part is valid or not

Cheers

1 Like

もちろん、喜んでお手伝いさせていただきます!

UiPath Studioで正規表現を使ってメールアドレスのバリデーションに問題があるようですね。以下に手順を詳しく説明します:

1.:mag: Is Match アクティビティ: このアクティビティは、テキストが指定された正規表現に一致するかどうかを確認します。メールアドレスのフォーマットをチェックするのに最適です。

2.:memo: Is Match アクティビティのプロパティ: 設定する必要がある重要なプロパティが2つあります:

  • Input: ここには、検証したいテキストを入力します。あなたの場合、それはメールアドレスになります。
  • Pattern: ここには、メールアドレスの検証に使用する正規表現を入力します。メールアドレスの検証によく使用される正規表現は以下の通りです:*“[1]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$”_
  • Result: ここには検証の結果を保存します。ブール型の変数(例えば “isEmailValid”)を作成し、このプロパティに割り当てます。

3.:vertical_traffic_light: Flow Decision アクティビティ: このアクティビティを使用すると、メールアドレスが有効かどうかによってワークフローを分岐させることができます。「Condition」プロパティに “isEmailValid” を入力します。

  • “isEmailValid” が true の場合、ワークフローは “True” ブランチに進み、プロセスを続行します。
  • “isEmailValid” が false の場合、ワークフローは “False” ブランチに進み、“Message Box” アクティビティを使用してエラーメッセージを表示します。

“Message Box” アクティビティの設定方法は以下の通りです:

  • Text: 表示したいエラーメッセージを入力します。例えば、「無効なメールアドレス」と入力できます。

このワークフローを設定すると、UiPath Studioはメールアドレスが指定したフォーマットに一致するかどうかをチェックし、一致しない場合はエラーメッセージを表示します。

提供した正規表現はシンプルなもので、すべての有効なメールアドレスをカバーしていないかもしれません。あなたが提供したものはより多くのケースをカバーしていますが、より複雑です。それを使用したい場合は、“Pattern” プロパティの正規表現を自分のものに置き換えてください。

お役に立てれば幸いです!他に質問があればお知らせください。


  1. a-zA-Z0-9.*%± ↩︎

1 Like

こんにちは

このままですと部分一致でもマッチしていますので、完全一致でのみマッチするようにします。
具体的には文頭・文末を示す^ や $を使って、^(パターン)$ のようにすればOKです。

^(((?>[a-zA-Z\d!#$%&'*+\-\/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-\/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>))$

なおメールアドレスのバリデーションは割と難しく、またメーラー側でのチェックがある場合、必ずしも上記と一致しないケースもあるので、実際の実装にあわせてチューニングする必要がある場合がありますので、ご注意ください。

いつもありがとうございます!無事にすべてのエラーが解消されました。完全一致という考え方、勉強してみます!

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.