Javascript 如何在具有正则表达式模式的匹配方法中使用变量
我想从一个字符串中得到一个JavaScript数组,将其切成两半 例如:Javascript 如何在具有正则表达式模式的匹配方法中使用变量,javascript,regex,match,Javascript,Regex,Match,我想从一个字符串中得到一个JavaScript数组,将其切成两半 例如: // From this: var myStr = 'cocacola'; // To this: var myArray = ['coca', 'cola']; 我尝试了以下方法: var myStr = 'cocacola'; var strHalf = myStr.length / 2; // This won't work var myArray = myStr.match(/.{1,strHa
// From this:
var myStr = 'cocacola';
// To this:
var myArray = ['coca', 'cola'];
我尝试了以下方法:
var myStr = 'cocacola';
var strHalf = myStr.length / 2;
// This won't work
var myArray = myStr.match(/.{1,strHalf}/g);
// Only this will work fine
var myArray = myStr.match(/.{1,4}/g);
您可以使用String.slice()来解决这个问题
var myStr='cocacola';
设len=myStr.length;
让结果=[myStr.slice(0,len/2),myStr.slice(len/2)]
控制台日志(结果)代码>您可以使用String.slice()来解决此问题
var myStr='cocacola';
设len=myStr.length;
让结果=[myStr.slice(0,len/2),myStr.slice(len/2)]
控制台日志(结果)代码>您需要使用RegExp()
构造函数并生成一个它能理解的字符串:
var regexString = "/.{1," + strHalf + "}/g";
var myRegex = new RegExp( regexString );
var myArray = myStr.match( myRegex );
…但要小心这样做;如果strHalf
是一个包含特殊字符(如/
)的字符串,则您的RegExp将有奇怪的行为。您需要使用RegExp()
构造函数并生成一个它能理解的字符串:
var regexString = "/.{1," + strHalf + "}/g";
var myRegex = new RegExp( regexString );
var myArray = myStr.match( myRegex );
…但要小心这样做;如果strHalf
是一个包含特殊字符的字符串,如/
,则您的RegExp将有奇怪的行为。您可以使用RegExp构造函数创建一个非硬编码的RegExp:
var myArray = myStr.match(new RegExp('/.{1,'+strHalf+'}/g'));
构造函数不知道strHalf
应该是整数,因此请确保您可以控制它
这会带来很多安全问题,请不要在生产中使用。正则表达式在不应该使用的时候太频繁了。如果你使用正则表达式,一定要考虑其他的选择
有更好的选择,但至少是可能的 您可以使用regexp构造函数创建非硬编码的regexp:
var myArray = myStr.match(new RegExp('/.{1,'+strHalf+'}/g'));
构造函数不知道strHalf
应该是整数,因此请确保您可以控制它
这会带来很多安全问题,请不要在生产中使用。正则表达式在不应该使用的时候太频繁了。如果你使用正则表达式,一定要考虑其他的选择
有更好的选择,但至少是可能的 你不需要正则表达式
最简单的方法是:
var myStr = 'cocacola';
var strHalf = myStr.length / 2;
var array = [myStr.substr(0, strHalf),myStr.substr(strHalf, myStr.length)];
jsfiddle:你不需要正则表达式
最简单的方法是:
var myStr = 'cocacola';
var strHalf = myStr.length / 2;
var array = [myStr.substr(0, strHalf),myStr.substr(strHalf, myStr.length)];
jsfiddle:您可以对字符串进行切片
并将第一个元素放置在数组的第一个插槽中,将第二个元素放置在数组的第二个插槽中
var str_len = myStr.length
var my_array = [myStr.slice(0, str_len/2), myStr.slice(str_len/2, str_len)]
您可以对字符串进行切片
并将第一个元素放置在数组的第一个插槽中,将第二个元素放置在数组的第二个插槽中
var str_len = myStr.length
var my_array = [myStr.slice(0, str_len/2), myStr.slice(str_len/2, str_len)]
你为什么要用正则表达式呢?看看method,为什么需要正则表达式呢?看看method@poster您不“需要”使用regexp,但它确实是一个可行的选项。是的,根据问题标题,我认为这是@Gabriel可能想在其他地方使用的一种技术。@poster您不“需要”使用regexp,但它确实是一个可行的选项。是的,根据问题的标题,我认为这是@Gabriel可能想在其他地方使用的一种技术。