是否需要有关正则表达式的帮助以从SMS提取OTP?

时间:2019-01-09 17:38:42

标签: java android regex

我正在开发Android应用程序以从SMS读取OTP,并提供用户选项以直接将OTP复制到剪贴板中。

现在的问题是短信可以如下:-

  1. 时间:02:30 PM您的OTP是3242。(otp可以是任何数字)。
  2. 12345是您的OTP。时间:04:45 AM。
  3. 您的帐户123456789的OTP是4565。

我需要使用Java中的Pattern和Matchers提取otp的帮助。 或任何其他简单的解决方案来获得otp。第三种情况可以忽略。 如果我们可以通过使用模式和匹配器从SMS中获取4或5或6位数字,则它也将起作用。

1 个答案:

答案 0 :(得分:0)

您可以使用此

这将涵盖您在示例中给出的所有三种情况。

^\d+(?=\sis)|(?<=is\s)\d+\.?$
  • ^\d+(?=\sis)-匹配后跟spaceis的任何数字。 (^锚定到字符串的开头)。涵盖了第二个示例的条件。
  • (?<=is\s)\d+\.?$-匹配isspace之后的任何数字。 ($锚定到字符串的结尾)。涵盖第一个和最后一个示例

Demo