gpt4 book ai didi

java - 匹配两个 EditText 条目不适用于星号 (fieldOne.matches(fieldTwo))

转载 作者:行者123 更新时间:2023-12-02 01:13:31 25 4
gpt4 key购买 nike

我正在处理一个注册 Activity ,用户电子邮件和密码存储在 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) {

}
});
}}

谢谢!

最佳答案

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

(!(password.equals(repassword)));

别忘了! (逻辑相反)在开始时如果您试图在两个条目不匹配的情况下发生某些事情。 :)

关于java - 匹配两个 EditText 条目不适用于星号 (fieldOne.matches(fieldTwo)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59006814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com