如何在android中验证密码字段?
嗨,我是android的新手,在我的应用程序中,我有更改密码页面的验证 这意味着密码必须包含至少8个字符,至少1个字母,1个数字和1个特殊字符,为此我尝试了下面的代码,但它不起作用 请帮帮我如何在android中验证密码字段?,android,Android,嗨,我是android的新手,在我的应用程序中,我有更改密码页面的验证 这意味着密码必须包含至少8个字符,至少1个字母,1个数字和1个特殊字符,为此我尝试了下面的代码,但它不起作用 请帮帮我 if(!isPasswordValidMethod(newPassword.getText().toString())){ System.out.println("Not Valid"); }else{ System.out.prin
if(!isPasswordValidMethod(newPassword.getText().toString())){
System.out.println("Not Valid");
}else{
System.out.println("Valid");
}
// Validate password
private boolean isPasswordValidMethod(String password) {
String yourString = newPassword.getText().toString();
System.out.println("yourString is =" + yourString);
boolean isValid = false;
// ^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$
// ^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$
String expression = "^(?=.*[A-Za-z])(?=.*\\\\d)(?=.*[$@$!%*#?&])[A-Za-z\\\\d$@$!%*#?&]{8,}$";
CharSequence inputStr = password;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
System.out.println("if");
isValid = true;
}else{
System.out.println("else");
}
return isValid;
}
尝试以下代码
//*****************************************************************
public static boolean isValidPassword(final String password) {
Pattern pattern;
Matcher matcher;
final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!])(?=\\S+$).{4,}$";
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(password);
return matcher.matches();
}
把你的代码改成这个
if(newPassword.getText().toString().length()<8 &&!isValidPassword(newPassword.getText().toString())){
System.out.println("Not Valid");
}else{
System.out.println("Valid");
}
if(newPassword.getText().toString().length()试试这个,它可以工作
public static boolean isPasswordValidMethod(final String password) {
Pattern pattern;
Matcher matcher;
final String PASSWORD_PATTERN = "^(?=.*[A-Za-z])(?=.*\\\\d)(?=.*[$@$!%*#?&])[A-Za-z\\\\d$@$!%*#?&]{8,}$""
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(password);
return matcher.matches();
}
要使用它
if(isValidPassword(password)){ //password valid}
您可以设置此处允许的任何符号电子邮件字段验证和密码验证的简单代码段,并检查密码字段中至少8个字符
String validPassword = "12345";
_Password_String = Password.getText().toString();
Matcher matcher = Pattern.compile(validPassword).matcher(_Password_String);
if (matcher.matches()) {
Log.e("d11", _Password_String);
Toast.makeText(getActivity(), "Password Match", Toast.LENGTH_LONG).show();
getFragmentManager().popBackStack();
} else {
Password.setError("Password");
Toast.makeText(getActivity(), "Password not Match", Toast.LENGTH_LONG).show();
}
if (isValidEmail(et_regemail.getText().toString())&&etpass1.getText().toString().length()>7){
if (validatePassword(etpass1.getText().toString())) {
Toast.makeText(getApplicationContext(),"Go Ahead".....
}
else{
Toast.makeText(getApplicationContext(),"InvalidPassword".....
}
}else{
Toast.makeText(getApplicationContext(),"Invalid Email".....
}
public boolean validatePassword(final String password){
Pattern pattern;
Matcher matcher;
final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*
[@#$%^&+=!])(?=\\S+$).{4,}$";
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(password);
return matcher.matches();
}
public final static boolean isValidEmail(CharSequence target) {
if (target == null)
return false;
return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
简单排序,只需使用下面的方法检查有效密码
public static boolean isValidPassword(String password) {
Matcher matcher = Pattern.compile("((?=.*[a-z])(?=.*\\d)(?=.*[A-Z])(?=.*[@#$%!]).{4,20})").matcher(password);
return matcher.matches();
}
您可以使用下面的方法
if (!isValidPassword(edtPassword.getText().toString())) {
errorDialog("Password must contain mix of upper and lower case letters as well as digits and one special charecter(4-20)");
}
密码不匹配
if (password.getText().toString() != reEnteredPassword.getText().toString()) {
//not match
}
用于空字段
if (password.getText().toString().isEmpty() || reEnteredPassword.getText().toString().isEmpty()) {
//Fieds empty error message
if ((password.getText().toString().length() < 8) || (reEnteredPassword.getText().toString().length() < 8)) {
// less than 8 characters error message
}
if (!password.getText().toString().matches( "^(?=.*[0-9])(?=.*[a-z])(?=.*[!@#$%^&*+=?-]).{8,15}$") || !reEnteredPassword.getText().toString().matches( "^(?=.*[0-9])(?=.*[a-z])(?=.*[!@#$%^&*+=?-]).{8,15}$")){
//not having special characters error message
}
少于8个字符
if (password.getText().toString().isEmpty() || reEnteredPassword.getText().toString().isEmpty()) {
//Fieds empty error message
if ((password.getText().toString().length() < 8) || (reEnteredPassword.getText().toString().length() < 8)) {
// less than 8 characters error message
}
if (!password.getText().toString().matches( "^(?=.*[0-9])(?=.*[a-z])(?=.*[!@#$%^&*+=?-]).{8,15}$") || !reEnteredPassword.getText().toString().matches( "^(?=.*[0-9])(?=.*[a-z])(?=.*[!@#$%^&*+=?-]).{8,15}$")){
//not having special characters error message
}
也许这个答案会帮助你:答案是否完整:它至少包含8个字符,至少包含1个字母、1个数字和1个特殊字符。Thanksys首先检查密码长度是否大于8 if(passwordEd.length()>8);if(newPassword.getText().toString().length(),即验证条件最小8个字符意味着它必须是“&”不是| |这种模式的条件是什么?密码必须至少包含8个字符,必须是字母数字,必须至少包含一个符号。像这样?@mddroid对于任何想知道的人来说…正则表达式表示用户需要输入至少1个大写字母、1个数字和1个符号f这一问题的解决方式和原因将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,您是在将来为读者回答这个问题,而不仅仅是现在提问的人。请在您的回答中添加解释,并说明适用的限制和假设。