【发布时间】:2018-03-24 00:15:25
【问题描述】:
我正在尝试使用正则表达式来验证十进制值。我在正则表达式下面写了,但它不允许第一个小数的值像 .5 或 .6 或 .1
常规经验:/^\d[0-9]{0,13}(\.\d{1,2})?$/
规则:
- 它应该允许正数。
- 小数点前最多允许 13 个数字
- 它应该允许在小数点后最多两个数字。
- 它应该允许 .(点)的数字像 .5
- 它不应该允许 .0
示例 - 有效输入
- 0
- 0.5
- 1.55
- .5
- 1234567890123(小数点前13位)
- 1234567890123.5
- 1234567890123.00
示例 - 无效输入
- .(点),
- .0
- 1.234
- 5.
- 12345678901234(小数点前14位)
- 12345678901234.56
const valid = [
"0",
"0.5",
"1.55",
".5",
"1234567890123",
"1234567890123.5",
"1234567890123.00",
];
const invalid = [
".",
".0",
"1.234",
"5.",
"12345678901234",
"12345678901234.56",
];
const rgx = /^\d[0-9]{0,13}(\.\d{1,2})?$/
console.log("Checking valid strings (should all be true):");
valid.forEach(str => console.log(rgx.test(str), str));
console.log("\nChecking invalid strings (should all be false):");
invalid.forEach(str => console.log(rgx.test(str), str));
【问题讨论】:
-
在你的正则表达式中从 ~ \d[0-9]{0,13} ~ 中删除 [0-9],然后它将允许 .5 或 .6 或 .1 等
-
您的问题实际上太宽泛了,因为缺少许多其他边缘情况。
标签: javascript regex