2017-06-07 1 views
0

derzeit Mein Benutzername Validierung ermöglicht nur Ober- und/oder Kleinbuchstaben, aber ich möchte unterstützen:Java/Android Regex Ausdruck Namen zu ermöglichen, die Apostroph und/oder Bindestrich können

Regular Namen wie „James Bond "OR Montagu-Stuart-Wortley-Mackenzie OR De'wayne OR De 'wayne (man beachte den Raum nach Apostroph) OR M'ontagu-S'tuart-W'ortley-M' ackenzie (space , Apostroph und Bindestrich erlaubt)

Hier ist der aktuelle Code:

private void checkFirstNameInput(){ 
     String firstName = edtFirstName.getText().toString(); 
     Pattern p = Pattern.compile("[^A-Za-z]"); 
     Matcher matcherFirstName = p.matcher(firstName); 
     boolean firstNameValid = firstName.trim().length() >= 1 && !matcherFirstName.find(); 

     if(firstNameValid){ 
      edtFirstName.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context, R.drawable.check_icon), null); 
      edtFirstName.setBackground(ContextCompat.getDrawable(context, R.drawable.textfield_gray)); 
      APrefs.registeringUser.setFirstName(edtFirstName.getText().toString().trim()); 

     }else{ 
      edtFirstName.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); 
      edtFirstName.setBackground(ContextCompat.getDrawable(context, R.drawable.textfield_gray)); 

     } 
     txtError.setVisibility(View.GONE); 
     checkNextButton(); 



    } 

Ich versuchte^[a-zA-Z '-] $ und auch andere Beiträge suchen, aber keinen Erfolg.

Danke & sehr geschätzt. diese

+0

dieses Muster Versuchen: 'Muster p = Pattern.compile ("[\\ p {L} '-] +"); 'und benutze' .matches() ' – anubhava

Antwort

1

Verwendung:

^[a-zA-Z'\\-\\s]+$ 

Ich habe es jetzt getestet und es funktioniert (entkam bereits für Java, fügen Sie nicht mehr Schrägstriche)

Pattern pattern = Pattern.compile("^[a-zA-Z'\\-\\s]+$"); 
Matcher matcherFirstName = pattern.matcher("M'ontagu-S'tuart-W'ortley-M' ackenzie"); 
matcherFirstName.find(); //true 
+1

Sie, Sir, sind großartig, danke – cyber101

Verwandte Themen