//floating numbers, an optional sign "+" or "-", then "1","1.", ".1", "0.1", ...
string[] slist = {"0",".0","1.","1.0","0.123","123.","123.466", "ab.", "-1"};
Regex re = new Regex("^[+-]?(?:\\d+(\\.\\d*)?|\\d*\\.\\d+?)$");
foreach (string s in slist)
Console.WriteLine("{0} matches? {1}", s , re.IsMatch(s));
if you are doing client side validation? if yes, try
<script>
var slist = ["0",".0","1.","1.0","0.123","123.","123.466", "ab.", "-1"];
var re = /^[+-]?(?:\d+(\.\d*)?|\d*\.\d+?)$/;
for (i in slist)
{
alert(slist[i] + " : " + re.test(slist[i]));
}
</script>