我想根据以下格式验证学生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");
}
}
答案 0 :(得分:2)
您检查单个字符是否可以与整个模式匹配,它无法以这种方式工作,您需要检查整个String
而不是单个字符。
答案 1 :(得分:1)
您的regex与输入相匹配并不正确
这就是它的样子
String sid = "^SLIOP-(S|WS)-(\\d)+$";
^
:字符串的开头SLIOP-
:匹配SLIOP-
Litterally (S|WS)
:匹配S
或WS
-
:匹配-
Litterally (\\d)+
:连续查找多个数字$
:字符串结尾