2014-11-17 3 views
2

Я работаю над проектом, в котором пользователь разрешается вводить только пароль с буквами , алфавитами и специальными символами, такими как (@. # $%^& _- & *) один в редакторе. Я пробовал различные методы. ** Примечание: пространство строго ограниченОграничить специальные символы в андроиде пароль EditText

Метод 1:

настройки цифры в макете следующим образом

Android: цифры = "0,1,2,3,4,5, 6,7,8,9, * @ # $% _- \ ^. & < qwertzuiopasdfghjklyxcvbnmABCDEFGHIJKLMNOPQRSTUVWXYZ»

Этот метод работает хорошо, но я мог бы в состоянии напечатать скобки '(', точкой с запятой ';', и я не мог набрать слэш '\' (который я добавил в цифры теге)

Способ 2:

Стараясь регулярное выражение со следующими метод

public static boolean limitPasswordCharacters(String about){ 
     // UserName Validation Pattern String 
     final Pattern USER_NAME_PATTERN = Pattern.compile("^[[email protected]#$%^&*_&\\]+$"); 
     if(USER_NAME_PATTERN.matcher(about).matches()){ 
      return true;    
     } 
     return false; 
    } 

Но, к сожалению, gettting исключением, как

11-17 16:18:11.155: E/AndroidRuntime(15877): java.util.regex.PatternSyntaxException: Missing closing bracket in character class near index 22: 
11-17 16:18:11.155: E/AndroidRuntime(15877): [[email protected]#$%^&*_&\] 

ответ

2

Измените шаблон, как показано ниже,

final Pattern USER_NAME_PATTERN = Pattern.compile("^[[email protected]#$%^&*_&\\\\]+$"); 

В Java регулярное выражение, означает обратную косую черту, вам нужно, чтобы избежать его три раза. Java рассматривает этот \\] как кронштейн lietral ].

Пример:

String digits="0,1,2,3,4,5,6,7,8,9,*@#$%_-\\^.&<qwertzuiopasdfghjklyxcvbnmABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
System.out.println(digits.matches("^[[email protected]#$%^&*_&,<\\\\]+$")); //true 
+0

благодаря Авинаш позвольте мне проверить и сказать и. – Chandru

+0

уверен, не торопитесь. –

+0

avinash все работает, но слэш (\) не работает в regex – Chandru

Смежные вопросы