场景
现在要限制用户输入,只能匹配 0 到 4.9 之间的数字。
只能一位小数,当然 1, 2, 3...是可以的
现在
/^[0-4]{1}\.{0,1}\d{0,1}$/
求改进
现在这个正则的问题就是。。。。。它能匹配像 12, 23, 45...这样的
求指教 = =!
现在要限制用户输入,只能匹配 0 到 4.9 之间的数字。
只能一位小数,当然 1, 2, 3...是可以的
/^[0-4]{1}\.{0,1}\d{0,1}$/
现在这个正则的问题就是。。。。。它能匹配像 12, 23, 45...这样的
求指教 = =!
js
'0 0.9 1.1 3 4.9 5 -1 5.1 12 21'.split(' ').map(function(n) { return /^[0-4](\.\d)?$/.test(n); })
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
首先
{1}
可以不写, 然后{0,1}
可以改成?
.然后再说问题. 你是想匹配整数或小数, 我们取简单的场景, 就是必须是
x
或者x.y
这种情况才合法,.y
或者x.
这种都不合法.那很容易判断, 如果有小数, 就一定有点. 这个时候可以把小数和点放到一个 group 里限制次数.
^[0-4](\.\d)?$
但是因为我们不需要 capture
\.\d
这个 group, 只需要测试匹配, 所以可以在括号中加入?:
.^[0-4](?:\.\d)?$
就这样.