var string;
var splitstring = string.split("????");

Моя строка 12BLG123 мне нужно, чтобы массив splitstring содержал элементы 12, BLG, 123 (буквы и цифры произвольно меняются)

0
Paul Baiju 28 Фев 2018 в 09:46

3 ответа

Лучший ответ
const string = `12BLG123`
const splitString = string.split(/(\d+)/).filter(i => i)

console.log(splitString)

Регулярное выражение разбивает строку на числовые строки. Поскольку split не включает значение, по которому он разделяется, мы используем синтаксис захвата для включения числовых строк. Пустые строки вводятся, если строка начинается или заканчивается числовыми строками, поэтому мы используем filter(i => i) для удаления пустых строк (это работает, потому что пустые строки являются ошибочными значениями в javascript).

4
shawon191 28 Фев 2018 в 07:01

Хотя это не регулярное выражение и не разделение, но вы можете сделать что-то вроде этого,

var str = "12BLG123";

var result = [].reduce.call(str, (acc, a) => {
    if (!acc.length) return [a];    // initial case
    let last = acc[acc.length - 1];
    // same type (digit or char)
    if (isNaN(parseInt(a, 10)) == isNaN(parseInt(last.charAt(0), 10))) 
        acc[acc.length - 1] = last + a;
    // different type
    else acc.push(a);
    // return the accumulative
    return acc;
}, [] /* the seed */);

console.log(result);
2
Ayman El Temsahi 28 Фев 2018 в 06:59

Это регулярное выражение, вероятно, будет работать.

var splitString = string.split("[^A-Z0-9]+|(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])");

0
Randhawa 28 Фев 2018 в 06:50