0

正規表現の助けが必要

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

すべてのパラメーターを取得する必要があります (名前 -> 値)

このようにしてみました/(\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,"
  }
}
4

3 に答える 3

0

I tried to use the split method, but don't know if it's good. Comments are welcome.

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];
}

Result (arg_array):

({left:"123", top:"345", width:"123", height:"34", center:"yes", help:"no", resizable:"yes", status:"now"})
于 2012-08-14T10:44:25.217 に答える
0

これを試して:

/(\w+)\s*=\s*([^,\s]*)/
于 2012-08-14T09:14:21.550 に答える
0

これを試して:

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

パラメータと値の両方に文字と数字のみが含まれている可能性があると想定しています。これを書くことで、より寛容になることを選択できます:

([^=\s,]+)\s*=\s*([^=\s,]+)
于 2012-08-14T09:15:16.693 に答える