如何在jtextbox上实时验证正则表达式?



>我正在尝试使用此正则表达式验证/过滤我的jtextbox:

^(([A-za-z]+[s]{1}[A-za-z]+)|([A-Za-z]+))$

我想用一个空格过滤两个名字。

尝试使用keytypedkeyreleased,但它不起作用(不会让我在文本框上写任何东西)并且e.consume()不起作用。

boolean StrCheck(String Exp,String str) {
return Pattern.matches(Exp,str);
}
@Override
public void keyTyped(KeyEvent e) {
if (e.getSource() == jTextField) {
String regexp = "^(([A-za-z]+[s]{1}[A-za-z]+)|([A-Za-z]+))$";
if (jTextField.getText().length() == 25) {
e.consume();
} if (StrCheck(regexp,jTextField.getText())){
}else {
e.consume();
}

我一直在寻找,但我得到的唯一可能的答案是创建一个 Documentlistene,但找不到任何示例或实际操作方式并使其工作。

两者都不能KeylListenerDocumentListener都不起作用。在大多数情况下,您需要使用 DocumentFilter。在执行此操作之前,请查看如何使用格式化文本字段。这对你来说可能就足够了。如果没有,这个答案就是你要找的。

最新更新