Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
如何在android中验证密码字段?_Android - Fatal编程技术网

如何在android中验证密码字段?

如何在android中验证密码字段?,android,Android,嗨,我是android的新手,在我的应用程序中,我有更改密码页面的验证 这意味着密码必须包含至少8个字符,至少1个字母,1个数字和1个特殊字符,为此我尝试了下面的代码,但它不起作用 请帮帮我 if(!isPasswordValidMethod(newPassword.getText().toString())){ System.out.println("Not Valid"); }else{ System.out.prin

嗨,我是android的新手,在我的应用程序中,我有更改密码页面的验证

这意味着密码必须包含至少8个字符,至少1个字母,1个数字和1个特殊字符,为此我尝试了下面的代码,但它不起作用

请帮帮我

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这一问题的解决方式和原因将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,您是在将来为读者回答这个问题,而不仅仅是现在提问的人。请在您的回答中添加解释,并说明适用的限制和假设。