using System.Globalization;
using System.Text.RegularExpressions;
public static void Main()
Console.WriteLine(Ext.IsNumeric("1"));
Console.WriteLine(Ext.IsNumeric("a"));
Console.WriteLine(Ext.IsNumeric("1.0"));
Console.WriteLine(Ext.IsNumeric("1.0", true));
Console.WriteLine(Ext.IsNumeric("+1.0", true));
Console.WriteLine(Ext.IsNumeric("-1.0", true));
Console.WriteLine(Ext.IsNumeric("+1.0", true, true));
Console.WriteLine(Ext.IsNumeric("-1.0", true, true));
Console.WriteLine(Ext.IsNumeric("1,0", true));
Console.WriteLine(Ext.IsNumeric("1,0", true, false, true));
Console.WriteLine(Ext.IsNumeric("1.000,00", true, false, true));
public static CultureInfo USCultureInfo => new CultureInfo("EN-US");
public static CultureInfo BRCultureInfo => new CultureInfo("pt-BR");
public static bool IsNumeric(this string aString, bool EhFoat = false, bool PermitirNegativo = false, bool EhFormatoBR = false)
if (string.IsNullOrEmpty(aString))
return Regex.IsMatch(aString, "^\\d{1,}$", RegexOptions.Singleline);
var Provider = (EhFormatoBR) ? BRCultureInfo : USCultureInfo;
var Options = NumberStyles.AllowDecimalPoint;
Options = Options | NumberStyles.AllowLeadingSign;
Options = Options | NumberStyles.AllowThousands;
return decimal.TryParse(aString, Options, Provider, out _);