正则表达式检索任何字母数字 otp 代码
Regex to retrieve any alphanumeric otp code
我正在尝试使用正则表达式来检索字母数字 OTP 代码(代码的长度可能是动态的,即取决于用户的选择)并且必须至少包含一位数字。
我试过以下正则表达式:
“[a-zA-z][0-9].[a-zA-z]”
但是如果代码中有特殊字符,它应该返回 null,而不是检索不需要的特殊字符前后的字符。
希望正则表达式在其上成功运行的一些包含 OTP 的示例邮件:
- 对于 78.90 印度卢比的交易,OTP 是 ****。
- **** 是您的一次性密码。
- 您好,您的 OTP 是 ****。
至少包含一位数字的字母数字 OTP 示例:
- 78784
- aZ837
- 987 纽约
- 19hd35
- 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, if you wish to explore/simplify/modify it, and in this link 的右上面板进行了解释,如果您愿意,您可以观察它如何与一些示例输入匹配。
试试这个
[0-9a-zA-Z]*[0-9]+[0-9a-zA-Z]*
这会评估您想要的结果。
我已经在 this site
中测试过了
您的正则表达式几乎是正确的。
应该是 \b[a-zA-z]*[0-9]+[a-zA-z0-9]*\b
.
我正在尝试使用正则表达式来检索字母数字 OTP 代码(代码的长度可能是动态的,即取决于用户的选择)并且必须至少包含一位数字。
我试过以下正则表达式: “[a-zA-z][0-9].[a-zA-z]”
但是如果代码中有特殊字符,它应该返回 null,而不是检索不需要的特殊字符前后的字符。
希望正则表达式在其上成功运行的一些包含 OTP 的示例邮件:
- 对于 78.90 印度卢比的交易,OTP 是 ****。
- **** 是您的一次性密码。
- 您好,您的 OTP 是 ****。
至少包含一位数字的字母数字 OTP 示例:
- 78784
- aZ837
- 987 纽约
- 19hd35
- 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, if you wish to explore/simplify/modify it, and in this link 的右上面板进行了解释,如果您愿意,您可以观察它如何与一些示例输入匹配。
试试这个
[0-9a-zA-Z]*[0-9]+[0-9a-zA-Z]*
这会评估您想要的结果。
我已经在 this site
中测试过了您的正则表达式几乎是正确的。
应该是 \b[a-zA-z]*[0-9]+[a-zA-z0-9]*\b
.