2016-05-13 12 views
-4

ich einen Telefon Validator mit den nachfolgend aufgeführten Bedingungen:?

  • Optional "+" an die Start
  • 0 oder 1 Bindestriche
  • mindestens 10 Nummern

In Verwenden sie den folgenden regulären Ausdruck: ^\+?(\d+)(-(\d+)|(\d+)+)?$

es funktioniert, aber es zählt "+" und " -" auch.

Ich kann für ex +123-45678

10 Zeichen schreiben, sondern nur 8 Zahlen.

Es sollte zu einem Zeitpunkt mindestens 10 Nummern

+1

Könnten wir bitte Ihre [mcve] sehen, mit der Sie Probleme haben? – kayess

+0

Mögliches Duplikat von [Ein umfassender Regex zur Überprüfung der Telefonnummer] (http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation) –

+0

Der Bindestrich ('-') kann sein irgendwo in der Schnur? –

Antwort

1

Lassen Sie uns nehmen Sie dieses ein Teil immer sein:

  • Optional „+“ am Anfang

du bereits erreicht haben , mit:

^\+? 
  • 0 oder 1 Bindestrich

Sie können dies erreichen mit einem lookahead:

^(?=[^-]*-?[^-]*$) 
  • Mindestens 10 Nummern

Ich nehme an, dass es auch nur Zahlen enthalten soll (und vielleicht ein Bindestrich)? Wieder mit einem Look-Ahead:

^(?=(\d-?){10}) 

setzen sie alle zusammen:

^\+?(?=[^-]*-?[^-]*$)(?=(\d-?){10}) 

Diese Regex ein viel einfacher wäre, wenn die Validierungsregeln waren weniger vage. Es hängt wirklich davon ab, was Ihre beabsichtigte Verwendung ist.

+0

Was ist dein Standpunkt? Ihr Beispiel sollte übereinstimmen, und es passt? –

+0

Ok siehe [v2] (https://regex101.com/r/qK1uM0/2). es passt, aber es sollte nicht übereinstimmen –

+0

Ahh ja, gut.OP hat nicht wirklich spezifiziert, dass die Telefonnummern NUR Ziffern enthalten könnten - obwohl das vernünftig scheint. Ich werde auch die "Verbesserte" Variante zur Verfügung stellen. –