我发现此正则表达式用于验证浮点数。但我看不到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"));

最佳答案

如果使用构造函数生成正则表达式,则必须转义反斜杠,即\变为\\:

var re1 = new RegExp("^[-+]?[0-9]*\\.?[0-9]+$");

另一种选择是使用不需要转义的文字语法:
var re1 = /^[-+]?[0-9]*\.?[0-9]+$/

08-08 03:33