2012-07-10 102 views
0

我想與正則表達式來拆分使用javascript字符到陣列JavaScript的分裂與正則表達式

富= foobar的= & foobar1 = foobar2 =

FOO,foobar的=, foobar1,foobar2 =

對不起,我要重新描述一下情況。 首先,我會將其拆分爲「&」,並希望稍後對其進行後期處理。

str=foo=foobar=&foobar1=foobar2= 
var inputvars=str.split("&") 
for(i=0;i<inputvars.length;i++){ 
    var param = inputvars[i].split("="); 
    console.log(param); 
} 

回報

[foo,foobar] 
[] 
[foobar1=foobar2] 
[] 

我試圖用.split( 「=」),但foobar的=得到splited出爲foobar的。

我基本上希望它是

[foo,foobar=] 
[foobar1,foobar2=] 

使用JavaScript來只分裂的第一次出現=任何幫助嗎?

+0

這真的是格式嗎?它從何而來。我從來沒有見過類似'=&'的東西。除此之外,它看起來像查詢字符串的一部分。 – 2012-07-10 01:53:59

+0

你能澄清你想要分割的準確規則嗎?這是兩個級別的分割,第一個用'&',然後用'='在結果組件上? – 2012-07-10 03:00:13

回答

1
/^([^=]*)=(.*)/.exec('foo=foobar=&foobar1=foobar2=') 

或容易編寫,但使用較新的「懶」運營商:

/(.*?)=(.*)/.exec('foo=foobar=&foobar1=foobar2=') 
+0

它返回以下結果 [「foo = foobar =&foobar1 = foobar2 =」,「foo」,「foobar =&foobar1 = foobar2 =」]這是不打算.. – flyclassic 2012-07-10 02:45:12

+0

@flyclassic - RegExp始終將整個匹配作爲第一個參數。第二個和第三個答案是否需要? – Malvolio 2012-07-10 03:37:56

+0

我知道了,但結果仍然不是我想要的LOL 它應該是['foo','foobar =','foobar1','foobar2 ='] – flyclassic 2012-07-10 04:01:56

1

從馬伏里奧,我得到的結論如下

var str = 'foo=foobar=&foobar1=foobar2='; 
var inputvars = str.split("&"); 
var pattern = /^([^=]*)=(.*)/; 
for (counter=0; counter<inputvars.length; counter++){ 

    var param = pattern.exec(inputvars[counter]);   
    console.log(param) 
} 

和結果(這正是我打算)

[foo,foobar=] 
[foobar1,foobar2=] 

感謝@malv olio暗示正則表達式 Cheers