从后面将字符串拆分为数组

Split a string into array from back

我有一个字符串。

var string = "31415926535897932384626433832795028841971693993751058209749445923078164";

我想从后面拆分成长度为10的数组

我有:

function split(a) {
  return a.split( /(?=(?:..........)*$)/ ).map(function(x){return parseInt(x)});
}

这给了我想要的输出:

[3, 1415926535, 8979323846, 2643383279, 5028841971, 6939937510, 5820974944, 5923078164]

问题:

只需在花括号内指定要为每个项目获取的位数。请注意,您不能将变量传递给使用 / 作为分隔符的正则表达式。您必须使用 RegExp 构造函数在正则表达式中传递变量。

var string = "31415926535897932384626433832795028841971693993751058209749445923078164";
function split(a,n) {
  return a.split( new RegExp("(?=(?:.{" + n + "})*$)" )).map(function(x){return parseInt(x)});
}
alert(split(string, 10))

您可以简单地使用匹配而不是拆分。

string.match(/(?!^.).{11}/gm)

DEMO

var string = "31415926535897932384626433832795028841971693993751058209749445923078164";
function split(a,n) {
  return a.match(new RegExp("(?!^.).{" + n + "}|^.", "gm")).map(function(x){return parseInt(x)});
}
alert(split(string, 11))

如果你还想匹配剩余的字符,即字符出现在开头,不匹配的字符出现在最后,你可以使用这个正则表达式。

/(?!^.).{11}|^.|.+/gm

DEMO

简单的方法..不使用 RegExp var string="31415926535897932384626433832795028841971693993751058209749445923078164"; var arr = new Array(); 而 (!string.length < 10) { substr = string.substr(strlen(string)-10); 字符串 = string.replace(substr, ''); arr.push(substr); } var result_arr = arr.reverse();

请检查这个

var _mySplit = function(str, splitLength) {
    var _regEx = '';
    var startSubStringLength = str.length % splitLength
    if(startSubStringLength > 0) {
        _regEx = new RegExp("(^.{1," + startSubStringLength + "})|(.{1," + splitLength +  "})|(.{1,})", "g")
    }
    return str.match(_regEx)
}