我希望程序中的一些 JTextField
仅接受与特定 Pattern
匹配的新输入。
我了解 JFormattedTextField
的掩码,但这不是我想要的。
对于每个新输入,文本仅应接受符合特定正则表达式模式流程的更改。
由于“需要正则表达式”的情况,这必须使用正则表达式来完成,例如输入是否应该接收其自身的一部分。通过一个例子可以更好地理解这一点:
假设我的正则表达式是 "(\\d{2})-bk\\d{3}\\.\\1"
。
输入 "123-bk001."
时,下一个输入的字符必须等于第一组,这意味着只有等于 123
的 3 个输入字符才被接受, 分别。
输入“456-bk404”。需要下一个字符为 "456"
。
我该怎么做?
<小时/>编辑:
这个例子只是为了说明一种没有正则表达式就很难解决的情况,我的实际用途并不限于此。因此,如果可能,答案应该具有更广泛的可用性(就问题的标题而言),而不是特定于本示例。
但是,如果这是不可能的,或者如果它比针对少数(3-5)种不同情况实现特定解决方案更困难,请随时告诉。
最佳答案
使用
DocumentFilter
用于删除或替换定义的不需要的字符(也许可以使用NavigationFilter.Bias
)您可以定义自己的
InputMask
withInputVerifier
关于java - 如何使 JTextField 或 JFormattedTextField 仅在与 REGEX 模式匹配时才接受输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13610320/