Regex 用于验证170000以下值的正则表达式

Regex 用于验证170000以下值的正则表达式,regex,validation,Regex,Validation,嗨,我有一个小验证来检查值是否低于170000, 这是我尝试过的,但有一些小问题。值的范围从0到170000 /^(?:[1-9]\d{0,4}|[1-6]\d{3}|170000)$/ 请有人纠正并解释这一点。为什么需要正则表达式 如果(value=0)完成你的工作,你就不能 /^\D*(\d{1,5}|1[0-6]\d{4}|170000)\D*$/ 这将检查整个字符串。否则,您需要微调正则表达式边界 \b(\d{1,5})\b|\b([1][0123456]\d{4})\b|\b(170

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

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


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

为什么需要正则表达式

如果(value=0)完成你的工作,你就不能

/^\D*(\d{1,5}|1[0-6]\d{4}|170000)\D*$/
这将检查整个字符串。否则,您需要微调正则表达式边界

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

解释:

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

  • \b(170000)\b
    :匹配170000


  • 这就解决了它,非常简单,而且不用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')
    });
    
    Ext.apply(Ext.form.field.VTypes{
    //vtype验证函数
    msrp:功能(val,字段){
    
    如果(val>=0&&val尽管尽可能避免使用正则表达式进行范围验证,但我认为您的问题在于第二个正则表达式段:

    • [1-9]\d{0,4}
    • [1-6]\d{3}
    • 170000
    第一个将处理长度为1到5(包括1到5)的所有数字,第二个应处理从
    100000
    到(但不包括)
    170000
    的六位数字(由第三个段处理)

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


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

    为什么不将其转换为一个数字?您试图针对哪种语言/工具?我使用的是extjs文本字段验证,我的字段具有extjs的屏蔽能力,因此我需要使用regexp测试验证。我想OP希望低于170000,而不是170000including@musefan检查他给出的正则表达式,它包括
    170000
    是的,我看到了,但是at并不意味着这不是正则表达式的问题之一。当然,这是很明显的,所以这可能是一个很好的指标,表明它应该是包容性的,但我再次尝试不从人们的问题中假设任何智能级别。当我将它用于ExtJS时,我对这个字段也几乎没有屏蔽。因此我使用RegExp.valid值需要在0范围内-170000@PunithRaj您仍然不需要使用正则表达式。只需检查输入是否为数字,数字是否在范围内。缺少零:应为170000您忘记了它还需要处理前导1。此外,它当然需要处理零