如何在 Java 中使用正则表达式验证字符串,该字符串将具有 24 个字母数字字符,至少 8 个字母,最后 5 个是数字



>我需要验证一个字符串,该字符串总共有 24 个字母数字字符,至少 8 个字母,最后 5 个是数字。它的正则表达式是什么。我是正则表达式的新手。我正在使用这个[0-9a-zA-Z]{1,9},但它不检查总长度,也不确保最后 5 个是数字和最少 8 个字母。

您可以使用这种可以包含一些正则表达式的方式:

if (str.replaceAll("[^a-zA-Z]", "").length() >= 8 && str.matches(".*\d{5}")) {
System.out.println("Valide");
} else {
System.out.println("Not valid");
}

  1. str.replaceAll("[^a-zA-Z]", "").length() >= 8替换所有非字母,然后计算其余字母,如果其余字母等于或大于,则为 8 则更正
  2. str.matches(".*\d{5}")的意思是字符串是否应该以 5 度结尾

因此,对于您在评论中提供的输入:

1B4YEM9P4KP186543      return "Not valid"
1FA-CP45E-X-LF192944   return "Valid"

注意

我需要验证一个字符串,该字符串总共有 24 个字母数字 字符

要解决此问题,您可以添加另一个条件str.length() == 24因此您的条件应如下所示:

if (str.length() == 24
&& str.replaceAll("[^a-zA-Z]", "").length() >= 8
&& str.matches(".*\d{5}")
) {
System.out.println("Valide");
} else {
System.out.println("Not valid");
}

注意

就像@FedericoPiazza评论中提到的,如果你想检查不连续的数字,你可以使用str.replaceAll("[^0-9]", "").lenght() >= 5而不是str.matches(".*\d{5}")所以你的条件应该是:

if (str.length() == 24
&& str.replaceAll("[^a-zA-Z]", "").length() >= 8
&& str.replaceAll("[^0-9]", "").lenght() >= 5) {
System.out.println("Valide");
} else {
System.out.println("Not valid");
}

相关内容

  • 没有找到相关文章

最新更新