Why not to use common approach for formatting and use appropriate IFormatProvider? Have no idea why do you need regex here...
public static string GetFormattedCurrency(decimal value) { var formatInfo = new NumberFormatInfo { CurrencyDecimalSeparator = ".", CurrencyGroupSeparator = ",", CurrencyGroupSizes = new[] { 3 }, CurrencySymbol = "$" }; return value.ToString("C", formatInfo); }