【发布时间】:2015-04-08 13:41:50
【问题描述】:
我在关键监听器中有以下代码:
c = char c = e.getKeyChar();
if(c==KeyEvent.VK_BACK_SPACE) {
boolean vFormandPresChck = txtAddressLine1.getText().
matches("((?=.*[0-9])(?=.*[a-zA-Z]))");
if(vFormandPresChck==true) {
btnAddAthlete.setEnabled(true);
} else {
btnAddAthlete.setEnabled(false);
}
}
据我所知,我的常客应该确保文本字段中的字符串至少包含 1 个字母和一个数字,然后单击退格键。但是,这似乎不起作用。例如,当文本字段中的字符串为4 Alder 时单击退格键,按钮应保持启用状态,因为字符串将为4 Alde,但它不会保持启用状态。对于这个问题,我将不胜感激
编辑
我已经在 regex101 网站上检查了这个,似乎认为它应该可以工作,所以有人能够澄清这个代码是否被破坏,或者它是否是我的其余代码中的错误
【问题讨论】:
-
正则表达式似乎没问题。
-
你到底想匹配什么?至少一个数字后跟至少一个字符?您的正则表达式似乎缺少写入示例字符串的空间。
-
那么我该如何添加空间呢?我之前没有写过带空格的
-
也只是尝试在字符串中没有空格,但它仍然不起作用@Nitram
-
没有看到实际的字符串很难说。请记住:
matches()尝试匹配整个字符串,而不仅仅是其中的一部分。也许你想要find()。
标签: java regex swing keylistener