Möglicher Duplikat:
Ein umfassender Regex für die Validierung von Telefonnummern
Ich habe eine unformatierte Telefonnummer (garantiert 10 Ziffern) und eine unformatierte Erweiterung (könnte null, leer oder eine beliebige Anzahl von Zahlen sein). Ich muss sie zu einem "freundlichen" String zusammenfügen. Ich dachte, ich würde sie konkatenieren und dann die Konkatenation mit einem Regex.Replace formatieren. Hier ist der Unittest, den ich verwende, um verschiedene Regexes auszuprobieren, bevor ich einen einfüge:
[Test, Ignorieren("Sandbox, testet keinen Produktionscode")]
public void TestPhoneRegex()
{
string nummer = "1234567890";
string erweiterung = "";
var formatierteKontaktnummer =
Regex.Replace("{0} x{1}".FormatWith(nummer, erweiterung),
@"^(\d{3})[ -]?(\d{3})[ -]?(\d{4})( x\d+)?",
@"$1-$2-$3$4");
Debug.WriteLine("{0} x{1}".FormatWith(nummer, erweiterung));
Debug.WriteLine(formatierteKontaktnummer);
Assert.AreEqual("123-456-7890", formatierteKontaktnummer);
}
Der erwartete formatierte String ist die formatierte Telefonnummer ohne das "x" und die Erweiterung. Allerdings passt die letzte Erfassungsgruppe das "x" mit oder ohne einer Zahl dahinter an, also statt "123-456-7890" erhalte ich "123-456-7890 x". Dies ist der letzte Entwicklungsschritt, der vor einer Veröffentlichung abgeschlossen sein muss. Hilfe?