如何更改此正则表达式
/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$/
看它接受“0.1”和“0.2”等值,但不应接受“0.0”
答案 0 :(得分:2)
一到四位数,带或不带小数精度1:
/^[1-9][0-9]{0,3}(\.[0-9])?$/
0.1至0.9,步骤0.1:
/^0\.[1-9]$/
/^[1-9][0-9]{0,3}(\.[0-9])?$|^0\.[1-9]$/
答案 1 :(得分:2)
这听起来真的不像正则表达式问题:从可维护性和可读性的角度来看,你可以把你的数字视为数字并进行简单的范围检查,这样做会好得多:
var isValid = function (x) {
// Make sure we're dealing with a number
x = parseFloat(x);
// If x is greater than zero but less than 0.9
// this expression evaluates to true so the
// function returns true, otherwise it evaluates
// to false so the function returns false.
return (x > 0 && x <= 0.9);
};
当然,它不使用任何正则表达式(这是你要求的)但是没有充分的理由使用它们来解决这个问题(主要是因为使用上面的方法更容易解决)
答案 2 :(得分:1)
RegExp涵盖现有案例,但也允许小数0.1 <= n <= 0.9
。
/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}\.[0-9]$|^0\.[1-9]$/
或更好,来自Dreynold的解决方案:
/^[1-9][0-9]{0,3}(\.[0-9])?$|^0\.[1-9]$/
旧答案,供参考,要求由OP更新:
如果您只想要一个小数位,并使用现有的允许值:
/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$|^0\.[1-9]$/
如果只是小数,那么:
/^0\.[1-9]$/
如果是多位小数:
/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$|^0\.[1-9][0-9]*$/
或
/^0\.[1-9][0-9]*$/