javascript 如何在正则表达式中限制位数

6tqwzwtp  于 2022-12-10  发布在  Java
关注(0)|答案(5)|浏览(174)

我使用match只返回输入的数字。我需要将输入的位数限制为2。我该如何做到这一点?

const numbers = input.match(/[0-9]+/g);
wnvonmuf

wnvonmuf1#

我们可以匹配正则表达式模式^[0-9]{1,2}

var input = "12345";
const numbers = input.match(/^[0-9]{1,2}/);
console.log(input + " => " + numbers);

注意,我们使用^[0-9]{1,2}而不是^[0-9]{2},因为用户可能只输入一个数字。

fae0ux8s

fae0ux8s2#

const input = "1234567890";
const regex = /^\d{2}$/;
const isTwoDigits = regex.test(input);

if (isTwoDigits) {
  console.log("The input contains exactly 2 digits");
} else {
  console.log("The input does not contain exactly 2 digits");
}
voj3qocg

voj3qocg3#

也许你可以使用属性maxlength="2"作为输入

7cwmlq89

7cwmlq894#

最简单的方法是把它写成两个数字

const numbers = input.match(/[0-9][0-9]/g);

另一种方法是把它写为计数为2的数字

const numbers = input.match(/[0-9]{2}/g);

也许您需要允许输入1个数字

const numbers = input.match(/[0-9][0-9]?/g);
const numbers = input.match(/[0-9]|[0-9][0-9]/g);
const numbers = input.match(/[0-9]{1,2}/g);
oxiaedzo

oxiaedzo5#

这将是您的正则表达式:

const numbers = input.match(/[0-9]{1,2}/);

我还将解释一些其他答案中可能不清楚的内容。

如果你的正则表达式以^开头,那么只有当字符串以它们开头时,你才会得到前2个数字:

const numbers = input.match(/^[0-9]{1,2}/);

如果将g追加到正则表达式中,则将获得所有数字对,而不仅仅是第一个数字对

const numbers = input.match(/[0-9]{1,2}/g);

为了更简单地编写正则表达式,我建议使用https://regex101.com,因为有一个真实的测试器和完整的备忘单与例子。

相关问题