2012-08-14 42 views
0

需要用正則表達式幫助JavaScript的正則表達式窗口PARAMS

var s = "left=123,top=345,width=123, height= 34, center=yes, help=no,resizable=yes, status=now"; 

需要得到所有PARAMS(名稱 - >值)

試過這樣/(\w+)\s?=(\S+)[\s|,]/

結果:

array(3) { 
    [0] => 
    array(3) { 
    [0] => 
    string(28) "left=123,top=345,width=123, " 
    [1] => 
    string(12) "center=yes, " 
    [2] => 
    string(23) "help=no,resizable=yes, " 
    } 
    [1] => 
    array(3) { 
    [0] => 
    string(4) "left" 
    [1] => 
    string(6) "center" 
    [2] => 
    string(4) "help" 
    } 
    [2] => 
    array(3) { 
    [0] => 
    string(22) "123,top=345,width=123," 
    [1] => 
    string(4) "yes," 
    [2] => 
    string(17) "no,resizable=yes," 
    } 
} 
+0

''(\ S +)''匹配可能過多字符。試試nongreedy版本''(\ S +?)'' – Hachi 2012-08-14 09:15:30

+0

請參閱http://stackoverflow.com/questions/901115/get-query-string-values-in-javascript – Stefan 2012-08-14 09:20:34

回答

0

我試過使用split方法,但不知道它是否好。歡迎評論。

var s = "left=123,top=345,width=123, height= 34, center=yes, help=no,resizable=yes, status=now"; 
var params = s.replace(/\s*,\s*/g,',').replace(/\s*=\s*/g,'=').split(','); 

var arg_array = {}; 

for(var n = 0, len=params.length; n < len; n++) { 
    var arg = params[n].split("="); 
    arg_array[arg[0]] = arg[1]; 
} 

結果(arg_array):

({left:"123", top:"345", width:"123", height:"34", center:"yes", help:"no", resizable:"yes", status:"now"}) 
0

試試這個:

/(\w+)\s*=\s*([^,\s]*)/ 
0

試試這個:

([\w\d]+)\s*=\s*([\w\d]+) 

我假定這兩個參數和值可能只包含字母和數字。你可以選擇更寬容通過這樣寫:

([^=\s,]+)\s*=\s*([^=\s,]+)