Creo que eso es masomenos así, lo codee de memoria, así que puede tener errores.
Código (csharp) [Seleccionar]
string strCadena = '-1.2';
string strRegExp = "^(?:\\+|-)?\\d+\\.\\d+$";
if (System.Text.RegularExpressions.Regex.IsMatch(strCadena, strRegExp)){
System.Console.WriteLine("Valido");
}else{
System.Console.WriteLine("Invalido");
}