0

给定以下字符串,我想生成一个包含每个键/值的数组。

这是我的测试字符串:

key1:value1 key2: value2 key3:"value3" key4: "value4" key5:'value5' key6: 'value6'

预期结果:

params[key1] == 'value1'
params[key2] == 'value2'
params[key3] == 'value3'
params[key4] == 'value4'
params[key5] == 'value5'
params[key6] == 'value6'

这是我到目前为止所拥有的,但它不适用于冒号后的 " 或 ' 引号字符串或空格。

var re = /([^ ]*):([^ ]*)/g

while (match = re.exec(subject)) {
  params[match[1]] = match[2];
}
4

1 回答 1

0

你很近。

 /([^ ]+):\s*(['"]?[^ '"]+['"]?)/g

那应该这样做。请注意,这不会提供验证,因此key1: value1"orkey1: 'value1"仍将通过。验证需要更复杂的模式。

于 2012-12-05T17:50:34.613 回答