2015-09-22 9 views
5

Ich versuche, einen regulären Ausdruck zu erstellen, der die zwei ersten Zeichen einer internationalen Telefonnummer als die Typen Benutzer validiert es in:Regex zu überprüfen Anfang internationale Telefonnummer

gilt: +, 0, + followed by a number, 00 , 0032476382763, +324763

ist nicht gültig:

: 0 followed by a number different than 0, ++, everything that is not in the valid list

Bisher habe ich mit gekommen sind

/[0]|[00]|[+]|[+\d]]/g 

Dies bestätigt jedoch ++ aber nicht +2. Das Problem ist, dass ich nicht herausfinden kann, wie man in Abhängigkeit von der Anzahl der Zeichen (1 oder 2) validiert.

Ich verwende diesen Ausdruck in javascript. Hier ist der Regex, an dem ich gearbeitet habe: http://regexr.com/3br5v

Mein Level in Regex ist nicht sehr gut, also würde jede Hilfe sehr geschätzt werden.

+0

Für welche Sprache ist das? Perl/C#/...? – rbm

+0

@rbm Ich habe meinen Beitrag bearbeitet – skirato

+0

Beachten Sie, dass Sie in Ihren Beispielen '[]' falsch verwenden. '[]' bezeichnet eine * Zeichenklasse *, also wird '[0]' nur mit Nullen übereinstimmen und '[00]' ist genau dasselbe wie '[0]'. Es ist kein Gruppenkonstrukt. –

Antwort

2

Dies scheint den Trick (Fehler behoben mit falsch positiven 01) zu tun:

/^([+]|00|0$)(\d*)$/ 

https://regex101.com/r/qT0dB7/2

+0

hinzugefügt Hoppla, es scheint, 01 ist ein falsches positives, versuchen zu beheben. –

+0

Aktualisierter Regex in der Post –

0

Diese Shou ld Arbeit:

^[1-9]\d|\+[1-9]|00 
0

\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d| 
 
2[98654321]\d|9[]|8[6421]|6[]|5[87654321]| 
 
4[987654310]|3[]|2[70]|7|1)\d{1,14}$

können Sie verwenden, wenn Sie die volle eine internationale Nummer validieren möchten.