2015-05-03 25 views
8

sto cercando di scrivere l'espressione che accetterà il seguente formato numeri di telefono:espressioni regolari con la fuga parentesi tonde

508 736 756 
505050505 
+48 505 505 505 
(+48) 505 505 505 
++48 505 505 505 
(++48) 505 505 505 
(23)692 36 99 
23 692 36 99 

ho scritto la seguente espressione

^(([+]{0,2}?)?([+]{0,2}?)?([0-9 ]+)?)$ 

Tuttavia, questa espressione solo coperture i formati elencati di seguito:

508 736 756 
505050505 
+48 505 505 505 
++48 505 505 505 
23 692 36 99 

Ho un problema con l'escap ing tra parentesi: (). È per questo che non riesco a coprire i seguenti formati:

(+48) 505 505 505 
(++48) 505 505 505 
(23)692 36 99 

ho cercato loro fuga con un backslash, ma non avrebbe funzionato per qualche ragione.

... [(] [+] {0,2}? [)] ...

DEMO:? https://regex101.com/r/hY5tG4/2

risposta

3

È possibile utilizzare seguente espressione regolare:

^((\(\+{0,2}[0-9]{1,2}\)|\+{0,2}[0-9]{0,2})?([0-9 ]+)?)$ 

Demo

Nota ° a voi omessi i numeri tra parentesi.Inoltre riguardo alla parentesi e ai numeri tra di loro non è possibile rendere le parentesi opzionali perché l'unione avviene e se le rendi facoltative il motore regex corrisponderà ad alcuni numeri di telefono come (23692 36 99.

E si noti che questa espressione regolare corrisponderà a numeri come (2) 692 36 99 se la lunghezza dei numeri tra parentesi deve essere 2 è possibile modificare il renge in espressioni regolari.

+0

Grazie ancora;) Funziona – DevWL

+0

@GlupiJa Di nuovo il benvenuto;) – Kasramvd

+1

Congrats on 20k –