var string;
var splitstring = string.split("????");
我的字符串是12BLG123 我需要数组splitstring有元素12,BLG,123 (字母和数字随机变化)
答案 0 :(得分:4)
const string = `12BLG123`
const splitString = string.split(/(\d+)/).filter(i => i)
console.log(splitString)

正则表达式通过数字字符串拆分字符串。由于split不包含被拆分的值,因此我们使用捕获语法来包含数字字符串。如果字符串以数字字符串开头或结尾,则引入空字符串,因此我们使用filter(i => i)
删除空字符串(它起作用,因为空字符串在javascript中是假值)。
答案 1 :(得分:2)
虽然不是正则表达式或拆分,但你可以这样做,
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 :(得分:0)
这个正则表达式可能会有用。
var splitString = string.split("[^A-Z0-9]+|(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])");