我发现这个正则表达式用于验证浮点数。但我看不出 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"));
我发现这个正则表达式用于验证浮点数。但我看不出 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"));
有时当你创建一个正则表达式字符串时,你甚至不得不转义反斜杠;这当然可以用反斜杠来完成,所以最终的正则表达式看起来像"\\.*"
,等等。
这样做,我能够得到正确的结果,如下所示:
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"));
如果使用构造函数生成正则表达式,则必须转义反斜杠,即\
变为\\
:
var re1 = new RegExp("^[-+]?[0-9]*\\.?[0-9]+$");
另一种选择是使用不需要转义的文字语法:
var re1 = /^[-+]?[0-9]*\.?[0-9]+$/
用句点(“.”)替换逗号(“,”)然后使用 parseFloat 怎么样?