如何在jtextbox上实时验证Regular Expresion?

时间:2019-05-12 09:04:07

标签: java regex swing netbeans-8 keylistener

我正在尝试使用此正则表达式验证/过滤我的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,但找不到任何示例,也找不到实际的方法并使之工作。

1 个答案:

答案 0 :(得分:2)

KeylListenerDocumentListener都不起作用。在大多数此类情况下,您需要使用DocumentFilter.之前,请看看how to use formatted textfields.对您而言就足够了。如果没有,那么您正在寻找这个answer