Javascript JS regex只允许100的增量

Javascript JS regex只允许100的增量,javascript,regex,Javascript,Regex,我想做的是只允许3或4位数字的增量为100 我知道如何做到这一点,但我认为有效的是没有实际工作,因为我没有得到匹配测试时。我想我现在明白为什么了,但我现在有点困惑,不知该怎么做才能实现我的目标 所以我想做的是只允许在输入中增加100,例如3700将有效,但3723将无效 我想到的是:^[0-9]{1,2}[0]{2}$。任何帮助都将不胜感激。这一个应该符合您的需要:^[1-9][0-9]?00$ 关于regex101 3100 // match 320 3320 100 // match 230

我想做的是只允许3或4位数字的增量为100

我知道如何做到这一点,但我认为有效的是没有实际工作,因为我没有得到匹配测试时。我想我现在明白为什么了,但我现在有点困惑,不知该怎么做才能实现我的目标

所以我想做的是只允许在输入中增加100,例如
3700
将有效,但
3723
将无效


我想到的是:
^[0-9]{1,2}[0]{2}$
。任何帮助都将不胜感激。

这一个应该符合您的需要:
^[1-9][0-9]?00$

关于regex101

3100 // match
320
3320
100 // match
230
500 // match
5000 // match
1245
000
0000
50002
50000
12000

这个应该符合您的需要:
^[1-9][0-9]-00$

关于regex101

3100 // match
320
3320
100 // match
230
500 // match
5000 // match
1245
000
0000
50002
50000
12000

为了简化,您需要(按顺序)匹配:

  • 一个非零数字
    [1-9]
  • 可选择后跟一位数字
    \d?
  • 后跟两个零
    00
    (或者
    0{2}
    ,根据您的喜好)
  • 给你:

    ^[1-9]\d?00$
    
    另外,这可能不是您的情况,因为您说过要匹配三位或四位数字,但如果您还想匹配
    0
    (零),则

    ^(0|[1-9]\d?00)$
    

    测试片段(零除外)

    var inp=document.getElementById('inp'),
    res=document.getElementById('res'),
    btn=document.getElementById('btn'),
    exp=/^[1-9]\d?00$/;
    功能测试(e){
    res.textContent=exp.test(inp.value)?“有效。”:“无效。”;
    }
    btn.addEventListener(“点击”,测试);
    输入添加列表器(“变更”,测试)
    
    提交
    

    为了简化,您需要(按顺序)匹配:

  • 一个非零数字
    [1-9]
  • 可选择后跟一位数字
    \d?
  • 后跟两个零
    00
    (或者
    0{2}
    ,根据您的喜好)
  • 给你:

    ^[1-9]\d?00$
    
    另外,这可能不是您的情况,因为您说过要匹配三位或四位数字,但如果您还想匹配
    0
    (零),则

    ^(0|[1-9]\d?00)$
    

    测试片段(零除外)

    var inp=document.getElementById('inp'),
    res=document.getElementById('res'),
    btn=document.getElementById('btn'),
    exp=/^[1-9]\d?00$/;
    功能测试(e){
    res.textContent=exp.test(inp.value)?“有效。”:“无效。”;
    }
    btn.addEventListener(“点击”,测试);
    输入添加列表器(“变更”,测试)
    
    提交
    

    所以您的号码必须是
    \000
    \000
    。所以


    简单地
    数字mod 100==0

    var input=prompt('entnumber');
    if(input.match(/[^\d]/)| | input%100!=0){
    警报(“输入错误”);
    }否则{
    警报(“正确输入”);
    
    }
    所以您的号码必须是
    #000
    #000
    。所以


    简单地
    数字mod 100==0

    var input=prompt('entnumber');
    if(input.match(/[^\d]/)| | input%100!=0){
    警报(“输入错误”);
    }否则{
    警报(“正确输入”);
    

    }
    那么您的正则表达式到底有什么问题?当它的行为与您期望的不一样时,会发生什么情况?我可以想象一些情况,但猜测并不是它应该如何工作的——如果你想得到帮助,你需要把你的问题弄清楚,并且可以重现。那么你的正则表达式到底出了什么问题?当它的行为与您期望的不一样时,会发生什么情况?我可以想象一些情况,但猜测并不是它应该如何工作的——如果你想得到帮助,你需要把你的问题弄清楚,并且可以重现。我想这是因为它将匹配
    0000
    它匹配一个超过4位的数字,这是错误的。@MarcoBonelli修复了!我没有看到最大4位数的要求;)它匹配的
    12345678923456789000
    不再匹配了^LoL!我猜这是因为它将匹配
    0000
    它匹配一个超过4位的数字,这是错误的。@MarcoBonelli修复了!我没有看到最大4位数的要求;)它匹配的
    12345678923456789000
    不再匹配了^LoL<代码>\d+
    将匹配第一个数字后的一个或多个数字。OP表示总位数可以是3或4。
    \d+
    将匹配第一个数字后的一个或多个数字。OP说总位数可以是3或4。@DCdaz这是因为如果要在更多行上测试多行(
    m
    )修饰符,需要将行视为独立的输入字符串。如果不指定它,正则表达式中的
    $
    标记将使其失败,因为输入一次全部求值。看一看,谢谢,伙计,把这个当礼物answer@DCdaz这是因为如果要在更多行上测试多行(
    m
    )修饰符,需要指定多行(
    m
    )修饰符,以使行被视为分离的输入字符串。如果不指定它,正则表达式中的
    $
    标记将使其失败,因为输入一次全部求值。看一看,谢谢,伙计,把这个作为答案