簡體   English   中英

在[]括號上拆分字符串

[英]Split string on [] brackets

字符串是某些輸入字段的名稱。 例子:

a[b][c]

x[y][z][]

我正在嘗試從中生成多維數組。

abc = value

xyz = [value] (因為[]而是一個數組)

無論如何,我有一些關於如何做到這一點的想法,但首先我需要將字符串拆分為包含所有鍵和子鍵的數組。

搜索谷歌我想出了這個

var parts = inputName.match(/[^\[\]]+/g);

它得到了我[a,b,c] ,但在第二個例子中我得到[x,y,z]而不是[x,y,z, null]

我還能以任何方式匹配[]並將其作為null添加到列表中嗎? 我對正則表達式並不熟悉


@AnnaK。 為什么不能簡單地使用ID和密鑰發送您的信息? 它是一個動態的形式嗎? 是因為你正在開發一個需要動態的框架嗎? 是因為你在多個地方使用一個功能? 你不能用名字來序列化嗎? 我們無法給你建議,因為我們仍然不知道為什么你需要將它作為一個數組傳輸(無論如何都要序列化),我們仍然不知道你的表單是什么樣的

因為我正在嘗試使用Ajax發送表單數據。 此外,在我發送數據之前,我需要預先添加一些我用javascript創建的字段。 我不能序列化它,至少不能用jQuery.serializeArray如果這就是你的意思,因為如果我有多個鍵如x[y][z][] ,只會出現最后一個鍵

您可以使用以下解決方案:

var parts = inputName.split(/[[\]]{1,2}/);
parts.length--; // the last entry is dummy, need to take it out

console.log(parts); // ["x", "y", "z", ""] 

如果你需要null值(因為有處理你沒有控制權),你可以使用這個片段來更新結果(cuTesy of @Ties):

parts = parts.map(function(item){ return item === '' ? null : item });

正則表達式: ([^\\[\\]]|\\[\\])+

將匹配:

a[b][c]       // a, b, c
x[y][z][]     // x, y, z
1[][2][][3][] // 1, [], 2, [], 3, []

我的基本想法是尋找[]而不是使用map()將其替換為null。

("a[bb][c][]").match(/([^[\]]+|\[\])/g).map( function(val) { return val==="[]" ? null : val; });

暫無
暫無

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

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