2016-08-09 3 views
0

Wie dies verwenden, um mit String.matches(...........)wie man diese regelmäßige excepression mit java - android macht?

^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-.)]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$

Es würde die folgenden Beispiele entsprechen und vieles mehr:

18005551234  
1 800 555 1234  
+1 800 555-1234 

+86 800 555 1234  
1-800-555-1234  
1 (800) 555-1234  
(800)555-1234  
(800) 555-1234  
(800)5551234 
800-555-1234 
800.555.1234 
800 555 1234x5678  
8005551234 x5678  
1 800 555-1234  
1----800----555-1234 
+0

hier ist Link dieses regex http://stackoverflow.com/questions/16699007/regular-expression-to-match -Standard-10-stellige Telefonnummer – mdaza

+1

Entfliehen Sie den Backslashes. Ich würde auch empfehlen, alle '\ d' durch' [0-9] 'zu ersetzen. In 'Matches' brauchen Sie nicht'^'und' $ '. Siehe [* Wie verwende ich regulären Ausdruck in Android *] (http://stackoverflow.com/questions/10327901/how-to-use-regular-expression-in-android). –

Antwort

0

Zuerst müssen Sie die erste + in Ihrem Muster zu entkommen.

Dann machen Trennzeichen optional und erlauben mehr als eine in Konsequenz alle Varianten wie 1 (800) 555-1234, (800) 555-1234 und 18005551234 übereinstimmen.

Die Regex wäre:

^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-.)]*(\d{3})[-. ]*(\d{4})(?: ?x(\d+))?\s*$ 

Demo: https://regex101.com/r/pV4hL9/1

, schließlich in Java, Flucht Schrägstriche mit Schrägstriche: libphonenumber
Und wenn Sie: https://ideone.com/L6bNA9

0

Sie verwenden könnten Entwickelt für Android 4.0 (Ice Cream Sandwich) oder später ist es in der Android-Framework eingebaut.

(Dies vor von jemandem anderen erwähnt wurde, aber sie entfernt, um die Antwort)