разбить номер на группу из 3 цифр, а остальные на 2 цифры - PullRequest
0 голосов
/ 15 марта 2019

Я хочу использовать JavaScript и регулярное выражение, чтобы разделить 7 цифр на одну группу из 3 цифр, а остальные на группу из 2 - это регулярное выражение У меня

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

Я ожидаю массив, отформатированный как: [123,45,67]

Ответы [ 3 ]

1 голос
/ 15 марта 2019

Вы можете взглянуть позитивно и сопоставлять только группы из трех или двух человек.

function split(n) {
    return n.toString().match(/.{2,3}(?=..)|.+/g);
}

console.log(split(1234567));
1 голос
/ 16 марта 2019

Вы можете просто использовать совпадение после регулярного выражения

/^\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)
1 голос
/ 15 марта 2019

У вас это есть, вам просто нужно преобразовать число в строку, используя 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))

Мы также можем использовать слайс 3 раза, чтобы получить различные фрагменты строки следующим образом:

let foo = String(1234567)

console.log([
  foo.slice(0,3),
  foo.slice(3,5),
  foo.slice(5,7)
].map(Number))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...