我想根据以下格式验证学生ID: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");
    }
}

最佳答案

您的regex确实不正确以匹配您的输入

这是它的样子

String sid = "^SLIOP-(S|WS)-(\\d)+$";



^:字符串的开头
SLIOP-:暂时匹配SLIOP-
(S|WS):匹配SWS之一
-:暂时匹配-
(\\d)+:连续查找多个数字
$:字符串结尾

10-07 15:19