我想使用JavaScript和regex将7位数字拆分为一组3位,其余的则分为2位,这就是regex 我有
let foo = 1234567;
foo.match(([\d.]{3})([\d.]{2})([\d.]{2}))
我希望数组的格式为:[123,45,67]
答案 0 :(得分:1)
基本上已经有了它,您只需要使用toString()
或String(foo)
将数字转换为字符串即可。然后shift()
离开列表的第一项
let foo = 1234567;
let matches = foo.toString().match(/([\d.]{3})([\d.]{2})([\d.]{2})/)
matches.shift()
// Use `.map(Number)` to convert the values back to numbers
console.log(matches.map(Number))
我们也可以使用slice 3次来抓取字符串的不同部分,如下所示:
let foo = String(1234567)
console.log([
foo.slice(0,3),
foo.slice(3,5),
foo.slice(5,7)
].map(Number))
答案 1 :(得分:1)
您可以进行积极的前瞻,仅匹配三到两个的组。
function split(n) {
return n.toString().match(/.{2,3}(?=..)|.+/g);
}
console.log(split(1234567));
答案 2 :(得分:1)
您只需在正则表达式后面使用match即可
/^\d{3}|\d{2}|\d+/
如果您希望输出仅包含两位数字中的至少一组(如果您有\d+
这样的数字,则可以放弃最后一个12345678 => ['123','45','67']
let foo = 1234567;
let op = ('' + foo).match(/^\d{3}|\d{2}|\d+/g)
console.log(op)