フロートを検証するためのこの正規表現を見つけました。しかし、2-1がどのように受け入れられるかはわかりません。以下はtrueと評価されます。「。」の代わりに「、」を受け入れる必要があるため、parseFloatを使用できません。また。私はre2を書きましたが、同じ結果です。
var re1 = new RegExp("^[-+]?[0-9]*\.?[0-9]+$");
console.log(re1.test("2-1"));
var re2 = new RegExp("^([0-9]+)\.([0-9]+)$");
console.log(re2.test("2-1"));