正则表达式验证低于170000的值

时间:2012-09-25 08:15:53

标签: regex validation

我有一个小的验证来检查值是否低于170000, 这是我尝试过但它有一些小问题。值的范围为0 - 170000

/ ^(?:[1-9] \ d {0,4} | [1-6] \ d {3} | 170000)$ /

请有人纠正并解释这一点。

5 个答案:

答案 0 :(得分:3)

为什么你需要正则表达式?

if (value <= 170000 && value >= 0)无法完成工作?

答案 1 :(得分:2)

/^\D*(\d{1,5}|1[0-6]\d{4}|170000)\D*$/

这将检查整个字符串。否则,您需要微调正则表达式边界。

答案 2 :(得分:1)

\b(\d{1,5})\b|\b([1][0123456]\d{4})\b|\b(170000)\b

演示: http://regexr.com?328t5

说明:

  1. \b(\d{1,5})\b:匹配0到99999之间的所有数字
  2. \b([1][0123456]\d{3})\b:匹配1后跟0到6,后跟任意4位数字,即100000到169999

  3. \b(170000)\b:匹配170000

答案 3 :(得分:1)

尽管可能最好避免使用正则表达式进行范围验证,但我认为您的问题在于您的第二个正则表达式段:

  • [1-9]\d{0,4}
  • [1-6]\d{3}
  • 170000

第一个将处理长度为1到5的所有数字,因此第二个应处理从100000到(但不包括)170000的六位数字(由第三个处理)段)。

然而,它只处理四位数字(无论如何已经由第一段处理)所以我怀疑它实际上应该是1[0-6]\d{4}

换句话说,/^(?:[1-9]\d{0,4}|1[0-6]\d{4}|170000)$/

答案 4 :(得分:0)

这解决了它,非常容易并且没有RegExp解决:) 其他人也发布了RegExp进行验证,感谢他们。

Ext.apply(Ext.form.field.VTypes, {
    //  vtype validation function
    msrp: function(val, field) {
        if(val >= 0 && val <= 170000){
            return true;                
        }else{
            return bundle.getMsg('vl.locate.label.ntavalidmsrp');
        }
        return validMaxMSRPTest.test(val);
    },
    // vtype Text property: The error text to display when the validation function returns false
    msrpText: bundle.getMsg('vl.locate.label.ntavalidmsrp')
});