1

我需要维护一个遗留应用程序,它会触发 SQL 查询来搜索存储在不同位置(即站、槽和子槽)的项目。当前查询将“AND (...)”部分附加到主查询,因此它可以动态构建更严格的搜索条件。

当第一个if返回 true(意味着用户在桌面应用程序的字段中键入内容并按下 Enter 键)时,我需要检查 jTextFieldPCA 的数据是否符合任何内部条件。数据的值通常是一个数字,但也可以是一个字母。

我正在尝试的正则表达式是这些,但我错过了一些东西。如何确保 6 的值落在第一个内部条件上,6.6 的值落在第二个内部条件上,以及 6.6.6 的值被第三个内部条件捕获?

if (jTextFieldPCA.getText().compareTo("") != 0) {

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) LIKE ");
            }

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "." + "[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) + '.' + CAST(complist.Slot AS VARCHAR) LIKE ");
            }

            if (jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "." + "[A-Za-z0-9]" + "." + "[A-Za-z0-9]") ) {
                strBuilder.append(" AND CAST(complist.Station AS VARCHAR) + '.' + CAST(complist.Slot AS VARCHAR) + '.' + CAST(complist.SubSlot AS VARCHAR) LIKE ");
            }
(...)

提前致谢,

特鲁德维希

4

2 回答 2

1

在点字符之前添加反斜杠

jTextFieldPCA.getText().matches("[A-Za-z0-9]" + "\\." + "[A-Za-z0-9]")
于 2012-12-12T11:03:34.637 回答
0

点是正则表达式中的特殊字符(表示任何数字),您需要对其进行转义

 "[A-Za-z0-9]" + "\\." + "[A-Za-z0-9]"

查看预定义字符类 正则表达式模式部分

于 2012-12-12T11:05:04.810 回答