我想将一个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?
答案 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 也是正确的或与此相同。