2017-05-25 1 views
1

Ich bin auf der Suche nach einem Regex nur diese Nummer zu akzeptieren, kein anderes Format.Regex nur dieses Format zu erlauben 123-456-7890

123-456-7890 

Ich habe versucht, aber auch diff-Formate zu akzeptieren.

Regex regexPhoneNumber = new Regex(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$"); 
+2

Was ist los mit '\ d {3} - \ d {3} - \ d {4}'? – ndn

+0

Es sieht aus wie .NET, also wird '\ d' besser vermieden. –

+0

@ WiktorStribiżew, ich wusste nicht, es gibt ein Problem mit .NET und '\ d' s. Könnten Sie teilen? – ndn

Antwort

1

können Sie

Regex regexPhoneNumber = new Regex(@"\A[0-9]{3}-[0-9]{3}-[0-9]{4}\z"); 

verwenden Es wird eine Zeichenfolge an, die mit 3 Ziffern beginnt, dann hat -, dann 3 Ziffern, - und dann 4 Ziffern mit dem Ende der Zeichenfolge Position gefolgt .

Einzelheiten:

  • \A - Beginn der Zeichenfolge
  • [0-9]{3} - 3 ASCII Ziffern
  • - - ein Bindestrich
  • [0-9]{3} - 3 Stellen
  • - - wieder ein Bindestrich
  • [0-9]{4} - 4 Ziffern
  • \z - das Ende der Zeichenfolge (es kann keine letzte Zeilenumschaltung folgen, wie es bei $ der Fall ist).

Beachten Sie, dass für den Fall, Sie \d statt [0-9] verwenden möchten, um das Muster zu verkürzen, und noch ASCII nur Ziffern entsprechen, RegexOptions.ECMAScript Option zum Regex-Objekt übergeben.