任意の英数字OTPコードを取得するために正規表現

Shrimanteeロイ:

私は、英数字OTPコード(コード、ユーザーの選択に応じて、多分、ダイナミックすなわちの長さ)を取得するために正規表現を取得しようとしていますし、少なくとも一桁が含まれている必要があります。

私は、次の正規表現を試してみました: "[-ZA-Z] [0-9] [-ZA-Z] "

特殊文字は、それが代わりにヌルをもたらすべきであるコード内に存在する場合でも、それが望まれていない特殊な文字の前と後の文字を取得します。

正規表現が正常に仕事に希望されているいくつかのサンプルOTP-含むメッセージ:

  1. OTPは、INR 78.90のTXNのため****です。
  2. ****あなたのワンタイムパスワードです。
  3. こんにちは、あなたのOTPは****です。

少なくとも1桁の英数字のOTPの例:

  1. 78784
  2. aZ837
  3. 987Ny
  4. 19hd35
  5. fc82pl
エマ:

それは多分、この式はで動作するかもしれませんが、少し難しいだろうiフラグ:

[a-z0-9]*\d[a-z0-9]*

またはワード境界で:

(?<=\b)[a-z0-9]*\d[a-z0-9]*(?=\b)

テスト

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "[a-z0-9]*\\d[a-z0-9]*";
final String string = "78784\n"
     + "aZ837\n"
     + "987Ny\n"
     + "19hd35\n"
     + "fc82pl";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}

式は、右上のパネルに説明されてregex101.comあなたが/簡素化/それを修正探索したい場合は、とにこのリンクは、あなたが好きなら、それは、いくつかのサンプルの入力にマッチする方法を見ることができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=230461&siteId=1