正则表达式匹配这组值

时间:2010-12-06 21:17:30

标签: javascript regex

如何更改此正则表达式 /^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$/ 看它接受“0.1”和“0.2”等值,但不应接受“0.0”

3 个答案:

答案 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]*$/