Javascript将字符串切成指定长度的块,存储在变量中

时间:2018-12-11 21:38:48

标签: javascript arrays regex

我想将一个javascript字符串切成指定长度的字符串数组(长度可以变化),所以我想将长度参数作为一个单独的变量:

var length = 3;
var string = 'aaabbbcccddd';
var myArray = string.match(/(.{3})/g);

如何在匹配中使用长度变量? 或任何其他类似于PHP中的str_split的解决方案。

我的问题不是以下内容的重复: Split large string in n-size chunks in JavaScript因为我知道如何切片,但问题是如何在match中使用变量。

我无法做到Javascript Regex: How to put a variable inside a regular expression?

2 个答案:

答案 0 :(得分:1)

  

如果总是需要除以string.substr(),则是更好的选择   仅长度。

但是如果您想知道如何使用正则表达式,可以通过以下方法在RegExp中添加变量。

var length = 3;
let reg = new RegExp(`(.{${length}})`, 'g')
var string = 'aaabbbcccddd';
var myArray = string.match(reg);
console.log(myArray);

答案 1 :(得分:0)

我不知道您是否已解决此问题:

昨天我已经回答了您的问题,但是由于问题被搁置或标记为重复而无法回答,后来我得到了解决的方法。希望它对您有所帮助。

我使用的是new RegExp(),请参见小提琴:

var length = 3;
var string = 'aaabbbcccddd';
dynamicRegExp =new RegExp("(.{"+length+"})", "g");
console.log("Regex used: "+ dynamicRegExp);
var myArray = string.match(dynamicRegExp);
console.log("Output: "+ myArray);

语法

new RegExp(pattern[, flags])
RegExp(pattern[, flags])

参数

  • 模式

正则表达式的文本,或者从ES5开始,复制另一个RegExp对象(或文字)(后者仅用于两个RegExp构造函数符号)。

  • 标志

如果指定,则标志指示要添加的标志,或者如果为模式提供了对象,则标志值将替换该对象的任何标志(并且lastIndex将重置为0)(从ES2015开始)。如果未指定标志并且提供了正则表达式对象,则该对象的标志(和lastIndex值)将被复制。

@Code Maniac 也是正确的或与此相同。