0
                if (password1.length() >= 15){          
                    final String PasswordPattern = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])[0-9A-Za-z]{15,}$";

                    Pattern pattern = Pattern.compile(PasswordPattern);
                    Matcher matcher = pattern.matcher(password1);   

                    if(matcher.matches() == true){                      

                        if (password1.equals(password2)){
                            SavePreferences(password1.toString());
                            //Intent intent = new Intent(LockAppActivity.this, ScreenLockActivity.class);
                            Intent intent = new Intent(LockAppActivity.this, PhoneNumActivity.class);
                            startActivity(intent);
                        }
                        else{
                            pass1.setText("");
                            pass2.setText("");
                            Toast.makeText(LockAppActivity.this,"Both passwords are not equal!",Toast.LENGTH_SHORT).show();
                        }
                    }

ユーザーに15文字以上のパスワードを入力してもらいたいのですが、これは大文字と小文字、数字、記号で構成されている必要があります。しかし、私は大文字と小文字と数字でパターンを作成する方法しか知りません...パターンにすべての記号を含めるにはどうすればよいですか...パターンコードの部分を確認してください...ありがとう

4

3 に答える 3

2

セクションを追加して、(?=.*(\W|_))英数字(AZ、az、0-9)記号以外のものをチェックできます。または、のような記号文字のセットを指定することもできます(?=.*[\.\*])。その場合[]は、正規表現機能を持つ各文字の前に円記号を使用して、の内容を許可するすべての文字に置き換えます。(この例は、2文字を許可するセクションを示しています.*

次に、発生数をカウントするセクションを更新する必要があります。現在、すべての文字を処理しているので、をに置き換えて、[0-9A-Za-z]次の.ように残すことができます^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*(\W|_)).{15,}$。これをJava文字列に配置するため、シングル\を2に置き換え\\ます。

Androidのキーパッドはさまざまである可​​能性があるため、すべてのキーパッドが同じ記号であることが保証されているわけではないことに注意してください。

于 2012-05-17T18:15:13.893 に答える
1

それはあなたが望むものの単なる例です。私は自分のプロジェクトで支柱を使用してこれを行いました。それはあなたのニーズを満たします。さらに条件を追加することもできます。これも参照してください... http://www.asciitable.com/

 if (getNewpassword() != null) {
                    int s;
                    for (int i = 0; i < getNewpassword().length(); i++) {
                        s = (int) getNewpassword().charAt(i);
                        if ((s>=33 && s<=64 )&&(s>=127&&s<=65)) {
                        }
    else
    {
                            errors.add("newpassword1", new ActionMessage("errors.notpwd", "must contains A-Z,a-z and any symbol"));
    }
                    }
                }
于 2012-05-17T18:48:15.390 に答える
0

別の質問に対するこの回答が役立つ場合があります。このパスワードの制約があなたのパスワードの制約とまったく同じであるかどうかはわかりませんが、役立つ可能性があるほど類似しているように見えました。

https://stackoverflow.com/a/372​​1953/339428

于 2012-05-17T17:17:21.567 に答える