The aim is to parse a string into an array dictionary in javascript.
For example this maybe the string that needs to be parsed
"k=23:3/24:32b=43:532:45/3:3253"
I would like that string to turn into a dictionary like so (Key - Value)
k - 23:3/24:32
b - 43:532:45/3:3253
My initial idea was to search for [a-Z]\*.* and split it into matches using regex.
However, I do not think this would work as this would also bring over b which is not what I want. Also, I was not able to get this to work (I'm new to regex).
An equals will only ever be between a key and variable (never in the value). The key will also only ever be a single character not a word.
var test = "k=23:3/24:32b=43:532:45/3:3253";
var r = /(.*)([a-Z])(//*)(*.)/
Above was my idea of going about it but I can not seem to get anything to work.
解决方案
Possibly use /.=[^=]+(?!=)/g to match the key value pair without further knowledge of what characters are possible for the key and value:
Here .= matches the key (single character) right before the equal sign;
[^=]+(?!=) matches all non = characters after until one character before the next equal sign (restrict the greedy match using a negative look ahead) or the end of string;
var test = "k=23:3/24:32b=43:532:45/3:3253";
var result = {}
test.match(/.=[^=]+(?!=)/g).forEach(
m => {
var [k, v] = m.split('=')
result[k] = v
}
)
console.log(result)