java - 如何使 JTextField 或 JFormattedTextField 仅在与 REGEX 模式匹配时才接受输入?

标签 java swing formatting block mask

我希望程序中的一些 JTextField 仅接受与特定 Pattern 匹配的新输入。

我了解 JFormattedTextField 的掩码,但这不是我想要的。

对于每个新输入,文本仅应接受符合特定正则表达式模式流程的更改。

由于“需要正则表达式”的情况,这必须使用正则表达式来完成,例如输入是否应该接收其自身的一部分。通过一个例子可以更好地理解这一点:

假设我的正则表达式是 "(\\d{2})-bk\\d{3}\\.\\1"。 输入 "123-bk001." 时,下一个输入的字符必须等于第一组,这意味着只有等于 123 的 3 个输入字符才被接受, 分别。 输入“456-bk404”。需要下一个字符为 "456"

我该怎么做?

<小时/>

编辑:

这个例子只是为了说明一种没有正则表达式就很难解决的情况,我的实际用途并不限于此。因此,如果可能,答案应该具有更广泛的可用性(就问题的标题而言),而不是特定于本示例。

但是,如果这是不可能的,或者如果它比针对少数(3-5)种不同情况实现特定解决方案更困难,请随时告诉。

最佳答案

关于java - 如何使 JTextField 或 JFormattedTextField 仅在与 REGEX 模式匹配时才接受输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13610320/

相关文章:

Java GUI 输入对话框出现两次

java - 打包,但不要变小

java - 如何自动选择JTable中最后插入的行?

html - 在 TiddlyWiki 5 中,如何防止代码块内的文本换行?

java - 无法连接到MSSQL数据库2012

java - 如何使用 Clojure 的 gen-class 创建多个 Java 成员变量

python - 特殊字符会破坏格式对齐

c# - 从字符串向 'RichTextBox' 插入新行?

java - 为什么在 android studio 中执行 osmdroid.jar 文件会抛出错误?

java - 将 Joda 时间段和 LocalDate 放入一个包中?