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];
}
Это то, что мне нужно. Спасибо! Мои глаза начинают скрещиваться, когда я смотрю на эти RegEx слишком долго. –
Я фактически пропустил требование. Причина для «» заключается в том, что значение может содержать пробел. Итак, key7: «Мой ключ». Используя ваши совпадения «key7» и «My» (не «Мой ключ»). Что мне нужно изменить, чтобы соответствовать полностью цитируемой строке? –
@ChrisDev - я думаю '/ ([^] +): \ s * ([^] + | '[^'] + '|" [^ "] +")/g' должен это сделать. обеспечить достойную (хотя, может быть, и не идеальную) проверку. –