[英]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)];
jsfiddle : https : //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.