我想要做的是只允许以3位或4位数字为增量100。JS正则表达式只允许增量为100
我得到如何去做到某一点,但我认为会工作并不实际工作,因为我在测试时没有找到匹配。我想我现在明白了为什么,但现在我有点困惑,为了实现我的目标该怎么做。
所以我想要做的只是允许在输入100增量,例如3700
将有效,但3723
不会。
我想出了这个:^[0-9]{1,2}[0]{2}$
。任何帮助将非常感激。
我想要做的是只允许以3位或4位数字为增量100。JS正则表达式只允许增量为100
我得到如何去做到某一点,但我认为会工作并不实际工作,因为我在测试时没有找到匹配。我想我现在明白了为什么,但现在我有点困惑,为了实现我的目标该怎么做。
所以我想要做的只是允许在输入100增量,例如3700
将有效,但3723
不会。
我想出了这个:^[0-9]{1,2}[0]{2}$
。任何帮助将非常感激。
为简单起见,你需要匹配(按顺序):
[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$/;
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>
这应该符合你的需要:^[1-9][0-9]?00$
Here is a sample上regex101
3100 // match
320
3320
100 // match
230
500 // match
5000 // match
1245
000
0000
50002
50000
12000
所以,你的号码必须是#000
或#..#000
。所以/^([1-9]00|[1-9]\d+00)$/
OR简单number mod 100 == 0
:
var input = prompt('Enter number');
if (input.match(/[^\d]/) || input % 100 != 0) {
alert('Wrong input.');
} else {
alert('Correct input');
}
'\ d +'会匹配第一个数字后面的一个或多个数字。 OP表示总位数可以是3或4. –
为您提供了使用模100 – Toto
那么,什么是真正不对您的正则表达式?当它的行为不像你期望的那样时,情况如何?我可以想象一些情况,但猜测不是它应该如何工作 - 如果你想获得帮助,你需要让问题清晰和可重现。 –