Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 匹配两个EditText条目不会';不能使用星号(字段一。匹配项(字段二))_Java_Android_Passwords - Fatal编程技术网

Java 匹配两个EditText条目不会';不能使用星号(字段一。匹配项(字段二))

Java 匹配两个EditText条目不会';不能使用星号(字段一。匹配项(字段二)),java,android,passwords,Java,Android,Passwords,我正在进行一项注册活动,用户的电子邮件和密码存储在Firebase数据库中。除了一件事之外,一切都很完美:正如您所看到的,代码允许在密码中使用特殊字符(即使您只需要至少8个字符,包括至少一个字母和一个数字),但如果我尝试使用“abcd1234*”之类的密码,仍然会收到“密码不匹配”的Toast错误消息正如我在这里写的: } else if (!(password.matches(repassword))){ Toast.makeText(this, "Passwords

我正在进行一项注册活动,用户的电子邮件和密码存储在Firebase数据库中。除了一件事之外,一切都很完美:正如您所看到的,代码允许在密码中使用特殊字符(即使您只需要至少8个字符,包括至少一个字母和一个数字),但如果我尝试使用“abcd1234*”之类的密码,仍然会收到“密码不匹配”的Toast错误消息正如我在这里写的:

 }
    else if (!(password.matches(repassword))){
        Toast.makeText(this, "Passwords don't match", Toast.LENGTH_LONG).show();
    }
如果我尝试使用相同的密码,但不包括星号,那么效果很好。这就像是在匹配两个特殊字符时,代码会变得混乱。以下是完整的代码:

public class SignUpActivity extends AppCompatActivity {
private Button CreateAccountButton;
private EditText InputEmail, InputPassword, ReInputPassword;
private TextView terminiRead;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);

    CreateAccountButton = findViewById(R.id.signup_btn);
    InputEmail = findViewById(R.id.signup_email_input);
    InputPassword = findViewById(R.id.signup_psw_input);
    ReInputPassword = findViewById(R.id.signup_repsw_input);
    terminiRead = findViewById(R.id.termini);

    terminiRead.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(SignUpActivity.this,TerminiDiServizio.class);
            startActivity(intent);
        }
    });

    CreateAccountButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CreateAccount();
        }
    });
}


private void CreateAccount() {


    String email = InputEmail.getText().toString();
    String password = InputPassword.getText().toString();
    String repassword = ReInputPassword.getText().toString();

    Pattern PSWPattern = Pattern.compile("^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d@$!%*#?&]{8,}$");

    if (TextUtils.isEmpty(email)){
        Toast.makeText(this, "Insert an e-mail address", Toast.LENGTH_LONG).show();
    }
    else if (!(Patterns.EMAIL_ADDRESS.matcher(email).matches())){
       Toast.makeText(this,"Invalid e-mail address", Toast.LENGTH_LONG).show();
    }
    else if (TextUtils.isEmpty(password)){
        Toast.makeText(this, "Insert a password", Toast.LENGTH_LONG).show();
    }
    else if (TextUtils.isEmpty(repassword)){
        Toast.makeText(this, "Reinsert your password", Toast.LENGTH_LONG).show();
    }
    else if (!(password.matches(PSWPattern.pattern()))){
        Toast.makeText(this, "The password length must be at least 8 and containing at least a number and a letter", Toast.LENGTH_LONG).show();
    }
    else if (!(password.matches(repassword))){
        Toast.makeText(this, "Passwords don't match", Toast.LENGTH_LONG).show();
    }
    else {
        ValidateAccount(email,password,repassword);
    }
}

private void ValidateAccount(final String email, final String password, final String repassword) {
    final DatabaseReference RootRef;
    RootRef = FirebaseDatabase.getInstance().getReference();

    RootRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot)
        {
            if (!(dataSnapshot.child("User").child(email.replace(".",",")).exists()))
            {
                HashMap<String, Object> userdataMap = new HashMap<>();
                userdataMap.put("email", email.replace(".",","));
                userdataMap.put("password", password);
                userdataMap.put("repassword", repassword);

                RootRef.child("User").child(email.replace(".",",")).updateChildren(userdataMap)
                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                if (task.isSuccessful()){
                                    Toast.makeText(SignUpActivity.this,"Thanks for signing up", Toast.LENGTH_LONG).show();

                                    Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
                                    startActivity(intent);
                                }
                                else
                                {
                                    Toast.makeText(SignUpActivity.this, "An error occurred, retry", Toast.LENGTH_LONG).show();
                                }
                            }
                        });
            }

            else
            {
            Toast.makeText(SignUpActivity.this, "E-mail address is already in use", Toast.LENGTH_LONG).show();
        }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}}
公共类注册活动扩展了AppCompatActivity{
私有按钮CreateAccountButton;
私人编辑文本输入电子邮件、输入密码、重新输入密码;
私有文本视图终端;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u注册);
CreateAccountButton=findViewById(R.id.signup\u btn);
InputEmail=findViewById(R.id.signup\u email\u input);
InputPassword=findViewById(R.id.signup\u psw\u输入);
ReInputPassword=findViewById(R.id.signup\u repsw\u输入);
terminiRead=findViewById(R.id.termini);
terminiRead.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(SignUpActivity.this,TerminiDiServizio.class);
星触觉(意向);
}
});
CreateAccountButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
CreateAccount();
}
});
}
私有帐户(){
字符串email=InputEmail.getText().toString();
字符串密码=InputPassword.getText().toString();
字符串repassword=ReInputPassword.getText().toString();
Pattern PSWPattern=Pattern.compile(“^(?=.[A-Za-z])(?=.*\\d)[A-Za-z\\d@$!%*?&]{8,}$”;
如果(TextUtils.isEmpty(电子邮件)){
Toast.makeText(这是“插入电子邮件地址”,Toast.LENGTH_LONG.show();
}
else if(!(Patterns.EMAIL\u ADDRESS.matcher(EMAIL.matches())){
Toast.makeText(这是“无效的电子邮件地址”,Toast.LENGTH_LONG.show();
}
else if(TextUtils.isEmpty(密码)){
Toast.makeText(这是“插入密码”,Toast.LENGTH_LONG.show();
}
else if(TextUtils.isEmpty(repassword)){
Toast.makeText(这是“重新插入密码”,Toast.LENGTH_LONG.show();
}
else如果(!(password.matches(PSWPattern.pattern())){
Toast.makeText(这是“密码长度必须至少为8并且至少包含一个数字和一个字母”,Toast.length_LONG).show();
}
如果(!(password.matches(repassword)),则为else{
Toast.makeText(这个“密码不匹配”,Toast.LENGTH_LONG.show();
}
否则{
ValidateAccount(电子邮件、密码、重新密码);
}
}
私有void ValidateAccount(最终字符串电子邮件、最终字符串密码、最终字符串重新密码){
最终数据库参考RootRef;
RootRef=FirebaseDatabase.getInstance().getReference();
RootRef.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot)
{
如果(!(dataSnapshot.child(“用户”).child(email.replace(“.”,“,”)).exists())
{
HashMap userdataMap=新HashMap();
userdataMap.put(“email”,email.replace(“.”,“,”));
userdataMap.put(“密码”,password);
put(“repassword”,repassword);
RootRef.child(“用户”).child(email.replace(“.”,“,”))).updateChildren(userdataMap)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(SignUpActivity.this,“感谢注册”,Toast.LENGTH_LONG.show();
意向意向=新意向(SignUpActivity.this、LoginActivity.class);
星触觉(意向);
}
其他的
{
Toast.makeText(SignUpActivity.this,“发生错误,重试”,Toast.LENGTH_LONG.show();
}
}
});
}
其他的
{
Toast.makeText(SignUpActivity.this,“电子邮件地址已在使用”,Toast.LENGTH_LONG.show();
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}}
谢谢大家!

password.matches(repassword)
希望传递Regex,然后传递一个字符串

  • password.equalsIgnoreCase(repassword)
    不区分大小写

  • password.equals(repassword)
    用于区分大小写

密码。匹配(repassword)
希望传递Regex,然后传递一个字符串

  • password.equalsIgnoreCase(repassword)
    不区分大小写

  • password.equals(repassword)
    用于区分大小写


找到的解决方案:只需使用equals()方法而不是matches()方法:


别忘了这件事!(逻辑相反)在开始时,如果两个条目不匹配,则尝试使事情发生。:)

找到的解决方案:只需使用equals()方法而不是matches()方法:

别忘了这件事!(逻辑相反)在开始时,如果两个条目不匹配,则尝试使某事发生
(!(password.equals(repassword)));