如何将 Jtextfield 值与模式匹配?

How to match Jtextfield value with a pattern?

我想根据以下格式验证学号:SLIOP-S-001 或 SLIOP-WS-1004。 我尝试了下面的代码,但它不起作用。有人可以帮我找出代码中的错误吗?谢谢

 private void studentidKeyTyped(java.awt.event.KeyEvent evt) {                                   
   char s=evt.getKeyChar();

    String sid = "^[SLIOP]+[-]+[S||WS]+[-]+[0-9]{6}";
    Pattern pattern = Pattern.compile(sid);
    Matcher matcher = pattern.matcher(String.valueOf(s));

    if (!matcher.matches()) {
        evt.consume();
    } else {
        JOptionPane.showMessageDialog(null,"Valid ID");
    }
}        

您检查单个字符是否可以匹配整个模式,这种方式根本行不通,您需要检查整个 String 而不是单个字符。

您的 与您的输入不匹配

这是它的样子

String sid = "^SLIOP-(S|WS)-(\d)+$";
  • ^ : 字符串的开头
  • SLIOP-:按字面意思匹配 SLIOP-
  • (S|WS) :匹配 SWS
  • 之一
  • -:按字面意思匹配 -
  • (\d)+ : 查找连续的多个数字
  • $:字符串结束