将数字分成3位数的组,其余分为2位数

时间:2019-03-15 18:59:41

标签: javascript regex

我想使用JavaScript和regex将7位数字拆分为一组3位,其余的则分为2位,这就是regex 我有

let foo = 1234567; 
foo.match(([\d.]{3})([\d.]{2})([\d.]{2}))

我希望数组的格式为:[123,45,67]

3 个答案:

答案 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)