JS正则表达式只允许增量为100

时间:2017-04-10 08:49:44

标签: javascript regex

我想要做的是只允许使用3位或4位的数字增加100。

我知道如何在某一点上做到这一点,但我认为可行的并不是真的有效,因为我在测试时没有得到任何匹配。我想我现在明白了为什么,但我现在有点困惑,为实现我的目标该怎么做。

所以我想要做的只是在输入中允许增量为100,例如3700有效但3723不会。

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

3 个答案:

答案 0 :(得分:3)

为简单起见,您需要匹配(按顺序):

  1. 一个非零数字[1-9]
  2. 可选地后跟一位数字\d?
  3. 后跟两个零00(或0{2},视情况而定)。
  4. 你走了:

    ^[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$/;
    
    function test(e) {
        res.textContent = exp.test(inp.value) ? "Valid." : "Invalid.";
    }
    
    btn.addEventListener('click', test);
    inp.addEventListener('change', test);
    
    <input id="inp"> <button id="btn">Submit</button>
    <p id="res"></p>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:1)

这个符合您的需求:^[1-9][0-9]?00$

regex101上的

Here is a sample

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

答案 2 :(得分:1)

因此,您的号码必须为#000#..#000。所以/^([1-9]00|[1-9]\d+00)$/

只需number mod 100 == 0

&#13;
&#13;
var input = prompt('Enter number');

if (input.match(/[^\d]/) || input % 100 != 0) {
  alert('Wrong input.');
} else {
  alert('Correct input');
}
&#13;
&#13;
&#13;