2015-05-03 7 views
8

Ich versuche, den Ausdruck zu schreiben, die das folgenden Telefonnummern-Format akzeptiert:reguläre Ausdrücke mit runder Flucht Klammern

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 

ich den folgenden Ausdruck

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

jedoch schrieb, dieser Ausdruck nur Abdeckungen die unten aufgeführten Formate:

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

ich habe ein Problem mit dem escap der Klammerzeichen: (). Deshalb kann ich die folgenden Formate nicht:

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

Ich habe versucht, sie mit einem Backslash, aber es wäre aus irgendeinem Grund nicht funktionieren.

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

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

Antwort

3

Sie folgenden regulären Ausdruck verwenden:

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

Demo

Hinweis th bei Ihnen weggelassen die Zahlen in Klammern. Auch über die Klammern und die Zahlen zwischen ihnen können Sie nicht die Klammern optional, weil die zusammen kommt und wenn Sie sie optional machen die Regex-Engine wird einige Telefonnummern wie (23692 36 99 übereinstimmen.

Und beachten Sie, dass diese Regex Zahlen wie (2) 692 36 99 übereinstimmen, wenn die Länge der Zahlen in Klammern 2 sein muss, können Sie das Renge in Regex ändern.

+0

Nochmals vielen Dank;) Es funktioniert – DevWL

+0

@GlupiJas Sie sind wieder herzlich willkommen;) – Kasramvd

+1

Congrats auf 20k –