2013-01-31 25 views
-1

我有這樣 var_111,var_222,var_132,var_122bb JavaScript變量列表...JavaScript的正則表達式:提取變量

下劃線後面的字符串是從遠程服務器響應,所以我不能事先指定它們。

我想運行一個循環遍歷所有var_ *變量。例如console.log中的所有變量。

我想這可以用正則表達式來完成,但我真的還沒有學習它。希望有人能幫助!

+1

這似乎是一個非常糟糕的主意。實際情況如何? – Ryan

+0

*有*一堆變量 - 如果是這樣,如何/在哪裏?或*想要*一堆變量 - 如果,爲什麼? (Post context。) – 2013-01-31 17:39:08

+1

你能告訴我們服務器響應的樣子嗎? – Dancrumb

回答

1
str.match(/var_\d+/g).forEach(function(v) 
{ 
    console.log(v); // v here is a variable such as var_111 
}); 

基於下面的說明,假設什麼是真正回事是服務器設置了一堆的全局變量的名字,你無法控制,你想要的是:

for (var k in window) 
    if (window.hasOwnProperty(k) && k.match(/^var_\d+$/)) 
     console.log(k) 

這遍歷了所有全局變量,並將它們與正則表達式進行比較,以獲得var _ ###類型的那些變量,並將它們打印出來供您使用。您可以通過window[k]獲取值。這是可行的,因爲所有全局變量實際上都是window對象的屬性。

+0

什麼是'str'? – Dancrumb

+0

一個字符串,如'var str =「var_111,var_222,var_132,var_122bb」;'這就是你說你從服務器獲得的。 – Plynx

+0

非常感謝你的代碼!但不幸的是,在獲取服務器響應之前,我並不知道var_之後的字符串,因此我無法事先指定var str。 – user2018232