- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一个注册 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/
*args 和 **kwargs 是什么意思? def foo(x, y, *args): def bar(x, y, **kwargs): 最佳答案 *args 和 **kwargs 是一个常见的惯
*args 和 **kwargs 是什么意思? def foo(x, y, *args): def bar(x, y, **kwargs): 最佳答案 *args 和 **kwargs 是一个常见的惯
*args 和 **kwargs 是什么意思? def foo(x, y, *args):def bar(x, y, **kwargs): 最佳答案
在python文档中2.4.3. Formatted string literals ,似乎可以在 f 字符串的 {} 中写一个星号后跟一个表达式,但我找不到如何使用它。 那是什么以及如何使用它?它是
这些函数定义中的*args和**kwargs是什么意思? def foo(x, y, *args): pass def bar(x, y, **kwargs): pass 参见Wha
这些函数定义中的*args和**kwargs是什么意思? def foo(x, y, *args): pass def bar(x, y, **kwargs): pass 参见Wha
这个问题在这里已经有了答案: Delegated yield (yield star, yield *) in generator functions (3 个答案) 关闭 6 年前。 假设我创建了
我有时注意到使用 *偶尔搜索光标下的单词会有略微不同的行为(通常是当我在不同的计算机之间切换时)。问题是当我搜索前面有 * 的单词时(如 c++ 指针)。例如: MyPointer *foo; ...
This question already has answers here: Keyword only parameter (1个答案) Python documentation for os.re
这是我的数据: dput(dt) structure(c(15236000, 0, 0, 0, 0, 36722900, 45971100, 0, 0, 0, 0, 99067
所以我有一个看起来像这样但有 6k 行的数据框: AWC, LocationID 333, *Yukon 485, *Lewis Rich 76, *Kodiak 666, Kodiak 54, *R
我有一个简单的问题。我想列出我们可以使用关键字星号(或星号)* 的所有场景。 我只知道这些场景: Select * from Customers; Select Count(*) from Custo
瑞安·贝茨的Railscast about git ,他的 .gitignore 文件包含以下行: tmp/**/* 使用双星号后跟一个星号的目的是什么:**/*?简单地使用 tmp/* 而不是 tm
我想以这种方式选择带有 class="x"的元素的所有后代元素: .x * { color: red; } a b
这个问题在这里已经有了答案: What does ** (double star/asterisk) and * (star/asterisk) do for parameters? (25 个答案
最近我在 Programming Paradigms 上看到了这个视频和教授。使用星号、星形和符号等术语。 这就是他如何使用这些运算符的: int i = 37; float f = *(float*
我尝试在自定义按钮中居中对齐符号星号 (*),但我做不到。 如何像其他字符一样垂直居中对齐(1,2...)? 最佳答案 只需使用不同的字符。除了 * (ASTERISK U+002A),还有许多其他类
结论 概括的来说,就是对修饰的变量进行拆分, 对修饰的形式参数进行参数聚集。 单*号,将被修饰的变量按元素方式拆分, 对修饰的形式参数进行参数聚集。 双**号,将被修饰的变量按键值对进行拆分, 对
如果我想保持功能,并且不想在中间使用 *,那么等效的替代函数是什么?例如, import operator as op print(op.eq(*map(str.upper, ['a', 'A']))
我窥视 ng2-dropdown 我可以看到(ng2-dropdown-menu.ts) 除其他事项外 transition('hidden => visible', [
我是一名优秀的程序员,十分优秀!