如何在 JavaScript 中使用正则表达式将数字的第一个和下一个数字作为数组获取?
我正在这样做:
let foo = '1234567';
let op = foo.match(/^\d{1}|\d{2}/g)
console.log(op)
但这即使在第三个数字之后也会输出所有内容。我试图让输出为
[1,23]
最佳答案
您可以将前两个数字捕获到单独的捕获组中:
let foo = '1234567';
let op = foo.match(/^(\d)(\d{2})/);
if (op) {
console.log(op.slice(1));
}
这里,
^
- 匹配字符串 (\d)
- 将一个数字捕获到组 1 (\d{2})
- 将第二个和第三个数字捕获到第 2 组中。见 regex demo 。
在访问组值之前,您应该检查是否存在匹配项,因此,您可以使用类似
if (op) {...}
的检查。 .slice(1)
用于去除数组中的第一个值,它始终是整个匹配值。如果您出于某种原因需要将正则表达式与交替和
g
修饰符一起使用,则只能使其与现在在大多数 JavaScript 环境中可用的后向一起工作:console.log( '1234567'.match(/^\d|(?<=^\d)\d{2}/g) );
这里,
^\d
- 匹配字符串 |
- 或 (?<=^\d)\d{2}
- 两个数字,在字符串开头有一个数字。 见 this regex demo 。
关于Javascript获取数字的前两位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62958130/