我正在尝试使用此正则表达式验证/过滤我的jtextbox:
^(([A-za-z]+[\s]{1}[A-za-z]+)|([A-Za-z]+))$
我想用一个空格过滤两个名字。
尝试使用keytyped
和keyreleased
,但是它不起作用(不会让我在文本框中写任何东西),并且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,但找不到任何示例,也找不到实际的方法并使之工作。
答案 0 :(得分:2)
KeylListener
和DocumentListener
都不起作用。在大多数此类情况下,您需要使用DocumentFilter.之前,请看看how to use formatted textfields.对您而言就足够了。如果没有,那么您正在寻找这个answer。