Java 这个正则表达式中有些地方出错了,我弄不明白

Java 这个正则表达式中有些地方出错了,我弄不明白,java,regex,jtextfield,Java,Regex,Jtextfield,我把所有东西都写在这里了, 我正在转换字符串中的输入,然后3个else条件正在检查空字段,它工作正常。在这些检查之后,我添加了正则表达式并验证了输入,在最后一个嵌套的if中,我将使用JDBC代码将数据插入到我的表中,但它没有通过第一次用户名验证 考虑到以下输入,我不明白为什么: public void actionPerformed(ActionEvent e) { String usernamePat = " ^[a-z0-9]{3,15}&"; String pas

我把所有东西都写在这里了, 我正在转换字符串中的输入,然后3个else条件正在检查空字段,它工作正常。在这些检查之后,我添加了正则表达式并验证了输入,在最后一个嵌套的if中,我将使用JDBC代码将数据插入到我的表中,但它没有通过第一次用户名验证

考虑到以下输入,我不明白为什么:

public void actionPerformed(ActionEvent e) {

    String usernamePat = " ^[a-z0-9]{3,15}&";
    String passwordPat = "((?=.*\\d)(?=.*[A-Za-z]).{6,20})";

    String strName = regname.getText();

    char[] mypass1 = pass1.getPassword();
    String strPass1 = new String(mypass1);

    char[] mypass2 = pass2.getPassword();
    String strPass2 = new String(mypass2);

    if (strName.isEmpty()) {
        obj.info("Please enter your username!", "Error");
        return;
    }

    if (strPass1.isEmpty()) {
        obj.info("Please enter your password!", "Error");
        return;
    }

    if (strPass2.isEmpty()) {
        obj.info("Please enter your password again!", "Error");
        return;
    }

    Pattern patU = Pattern.compile(usernamePat);
    Pattern patP = Pattern.compile(passwordPat);

    Matcher matU = patU.matcher(strName);
    Matcher matP = patP.matcher(strPass1);

    if (matU.matches()) {

        if (matP.matches()) {

            if (strPass1.equals(strPass2)) {

            } else {
                obj.info("Passwords dont match, please confirm it again", "Error");
            }

        } else {
            obj.info("You can only use alphabets/numbers in Password", "Error");
        }

    } else {
        obj.info("Please use only alphabets & numbers in Username", "Error");
    }

}

在模式的开头有一个空格(
“^[a-z0-9]{3,15}&”
)和一个尾随的符号(因此只有以空格开头,以符号结尾的字符串才会通过)。此外,您没有包括大写字母

username : maisam123
password : abc123
confirm password: abc123
但是,为了允许大写字母,它应该是

String usernamePat = "^[a-z0-9]{3,15}";

结束符号是
$
,而不是
&
。你在开始的时候还有一个额外的空间

String usernamePat = "^[A-Za-z0-9]{3,15}";

有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有两个问题了。(对不起,不知道你的正则表达式出了什么问题)@CodyS no issue bro,终于解决了:):)我删除了空格并使用了“^[A-Za-z0-9]{3,15}&”这一个,仍然是相同的输出:(也没有符号。
字符串
匹配的结尾将是
$
。谢谢你的帮助,我删除了空格,但主要问题是&结尾处签名,解决了:)谢谢兄弟,对不起,我没有注意到经过几个小时的挣扎(*:没问题,没有注意到这样平庸的事情会发生在任何人身上。)
^[a-z0-9]{3,15}$