using System.Text.RegularExpressions;
public static void Main()
var phone1 = "9012345678x123";
var phone2 = "9012345678";
Console.WriteLine("Phone Link: {0}", FormatPhoneLink(phone1));
Console.WriteLine("Phone Display: {0}", FormatPhoneDisplay(phone1));
Console.WriteLine("Phone Link: {0}", FormatPhoneLink(phone2));
Console.WriteLine("Phone Display: {0}", FormatPhoneDisplay(phone2));
private static string FormatPhoneLink(string value)
var phoneWithExtensionPattern = @"^(\d{3})(\d{3})(\d{4})x(\d{1,5})$";
var phoneWithoutExtensionPattern = @"^(\d{3})(\d{3})(\d{4})$";
if (Regex.IsMatch(value, phoneWithExtensionPattern))
return Regex.Replace(value, phoneWithExtensionPattern, "tel:+1-$1-$2-$3;ext=$4");
else if (Regex.IsMatch(value, phoneWithoutExtensionPattern))
return Regex.Replace(value, phoneWithoutExtensionPattern, "tel:+1-$1-$2-$3");
private static string FormatPhoneDisplay(string value)
var phoneWithExtensionPattern = @"^(\d{3})(\d{3})(\d{4})x(\d{1,5})$";
var phoneWithoutExtensionPattern = @"^(\d{3})(\d{3})(\d{4})$";
if (Regex.IsMatch(value, phoneWithExtensionPattern))
return Regex.Replace(value, phoneWithExtensionPattern, "($1) $2-$3 x $4");
else if (Regex.IsMatch(value, phoneWithoutExtensionPattern))
return Regex.Replace(value, phoneWithoutExtensionPattern, "($1) $2-$3");