我发现这个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"));
答案 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呢?