如何将Jtextfield值与模式匹配?

时间:2016-06-24 17:47:43

标签: java swing jtextfield

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

2 个答案:

答案 0 :(得分:2)

您检查单个字符是否可以与整个模式匹配,它无法以这种方式工作,您需要检查整个String而不是单个字符。

答案 1 :(得分:1)

您的与输入相匹配并不正确

这就是它的样子

String sid = "^SLIOP-(S|WS)-(\\d)+$";
  • ^:字符串的开头
  • SLIOP-:匹配SLIOP- Litterally
  • (S|WS):匹配SWS
  • 中的任何一个
  • -:匹配- Litterally
  • (\\d)+:连续查找多个数字
  • $:字符串结尾