java - 这个正则表达式有些问题,我无法弄清楚

标签 java regex jtextfield

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");
    }

}

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

鉴于以下输入,我不明白为什么:

username : maisam123
password : abc123
confirm password: abc123

enter image description here

最佳答案

模式开头有一个空格 ("^[a-z0-9]{3,15}&") 和结尾的 & 符号(因此只有 String(s) 以空格开头并以 & 符号结尾将通过)。另外,您没有包含大写字母。

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

但是,为了允许大写字母,它应该类似于

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

关于java - 这个正则表达式有些问题,我无法弄清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28078744/

相关文章:

Java GUI 不变

java - 此 HQL 查询不适用于元素或成员,但 native 查询可以

python - 在python中使用正则表达式在字符串列表中查找匹配关键字后的下一个单词

javascript - 用 React 兼容的样式替换所有 html 样式属性

Java - 如何判断用户是否已在文本字段中输入文本,但现在处于空闲状态?

java - jcifs.smb.SmbException : The system cannot find the file specified? 异常

java - 用于 war 部署的外部资源与内部资源,例如 Tomcat

regex - 匹配算法还是正则表达式?

java - 关于 JTextFields 和输入

Java Swing 。 ScrolPane 内的 TextField 不完全可见