如何将 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
而不是单个字符。
您的 regex 与您的输入不匹配
这是它的样子
String sid = "^SLIOP-(S|WS)-(\d)+$";
^
: 字符串的开头
SLIOP-
:按字面意思匹配 SLIOP-
(S|WS)
:匹配 S
或 WS
之一
-
:按字面意思匹配 -
(\d)+
: 查找连续的多个数字
$
:字符串结束
我想根据以下格式验证学号: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
而不是单个字符。
您的 regex 与您的输入不匹配
这是它的样子
String sid = "^SLIOP-(S|WS)-(\d)+$";
^
: 字符串的开头SLIOP-
:按字面意思匹配SLIOP-
(S|WS)
:匹配S
或WS
之一
-
:按字面意思匹配-
(\d)+
: 查找连续的多个数字$
:字符串结束