簡體   English   中英

如何在具有正則表達式模式的match方法中使用變量

[英]How to use a variable in a match method with regular expression pattern

我想從字符串中獲取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,strHalf}/g);
// Only this will work fine
var myArray = myStr.match(/.{1,4}/g);

您可以執行String.slice()解決此問題

 var myStr = 'cocacola'; let len = myStr.length; let result = [myStr.slice(0, len/2), myStr.slice(len/2)] console.log(result); 

您將需要使用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應該是整數,因此請確保您可以控制它。

眾所周知,這會引入很多安全問題,請不要在生產中使用它。 正則表達式在不應使用時經常使用。 如果您曾經使用過正則表達式,請查看其他選項

有更好的選擇,但至少有可能!

您不需要正則表達式。

最簡單的方法是:

var myStr = 'cocacola';
var strHalf = myStr.length / 2;
var array = [myStr.substr(0, strHalf),myStr.substr(strHalf, myStr.length)];

jsfiddlehttps : //jsfiddle.net/cudg8qc3/

您可以只對字符串進行slice ,然后將第一個元素放在數組的第一個插槽中,將第二個元素放在第二個插槽中。

var str_len = myStr.length
var my_array = [myStr.slice(0, str_len/2), myStr.slice(str_len/2, str_len)] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM