如何在 jtextbox 上实时验证正则表达式?
How to validate Regular Expression in real time on jtextbox?
我正在尝试 validate/filter 我的 jtextbox 使用此正则表达式:
^(([A-za-z]+[\s]{1}[A-za-z]+)|([A-Za-z]+))$
我想用一个名字过滤两个名字 space。
尝试使用 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,但找不到任何示例或实际如何实现并使其工作。
KeylListener
、DocumentListener
都不行。在大多数此类情况下,您需要使用 DocumentFilter. Before you do though, take a look on how to use formatted textfields. It might be enough for you. If it does not, this 就是您要查找的内容。
我正在尝试 validate/filter 我的 jtextbox 使用此正则表达式:
^(([A-za-z]+[\s]{1}[A-za-z]+)|([A-Za-z]+))$
我想用一个名字过滤两个名字 space。
尝试使用 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,但找不到任何示例或实际如何实现并使其工作。
KeylListener
、DocumentListener
都不行。在大多数此类情况下,您需要使用 DocumentFilter. Before you do though, take a look on how to use formatted textfields. It might be enough for you. If it does not, this