正则表达式为浮点数

时间:2012-07-10 07:38:50

标签: javascript regex

我发现这个regexp用于验证浮点数。但我不知道2-1会如何接受。以下评估为真。我不能使用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"));

3 个答案:

答案 0 :(得分:3)

有时当你创建一个正则表达式字符串时,你甚至必须逃避反斜杠;这当然可以用反斜杠来完成,所以最终的正则表达式看起来像"\\.*"等。

这样做,我就能得到正确的结果,如here所示:

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"));

console.log(re1.test("2.1"));
console.log(re2.test("2.1"));​

答案 1 :(得分:3)

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

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

另一种选择是使用不需要转义的文字语法:

var re1 = /^[-+]?[0-9]*\.?[0-9]+$/

答案 2 :(得分:0)

如何用句点(“。”)替换逗号(“,”)然后使用parseFloat呢?