Java 检查扫描输入是否既是特定字符串又是三位数字

Java check if a scan input is both a specific string and only three digits

我有一个项目正在询问,“订单由用户输入。订单以 FB 或 SB 开头,然后在这些字母后有三位数字。必须检查以确保订单号是字母代码而且只有三位数。”在 java.

例如。 创建订单号[FB或SB为礼品类型和三个整数]:FB343

我正在努力寻找如何在一个输入中验证两者。

对我来说,这看起来像一个 正则表达式 。您可以使用 PatternMatcher 来测试给定的订单是否与 Pattern 匹配;它以 F 或 S 开头,然后是 B,然后是三位数字。喜欢,

String[] arr = { "SB123", "FB124", "CBXXX", "FB1234" };
Pattern p = Pattern.compile("[SF]B\d{3}");
for (String s : arr) {
    Matcher m = p.matcher(s);
    System.out.printf("%s %b%n", s, m.matches());
}

产出

SB123 true
FB124 true
CBXXX false
FB1234 false

正则表达式应该可以解决问题。

只是 运行 Pattern.matches() 在序列 ^((FB)|(SB){1})([0-9]{3})$

类似

public class Matcher(string){
bool = Pattern.matches(^((FB)|(SB){1})([0-9]{3})$), string);
}

所以要进一步加强订单号验证:

String orderNumber = "fb323"; // The Order Number.

int minNumber = 100;  // The min value that will ever be in a Order. Number
int maxNumber = 2500; // The max value that will ever be in a Order. Number
int curNumber = Integer.parseInt(orderNumber.replaceAll("\D", ""));

if (orderNumber.matches("(?i)[SF]B\d{3,}") && (curNumber >= minNumber && curNumber <= maxNumber)) {
    System.out.println("VALID!");
}
else {
    System.out.println("INVALID!");
}