In JS, I’m trying to build an object from the below code. However I’m stuck at getting regex named groups with the below replace function.
JavaScript
x
var formatters = {
'p': 'padding',
'm': 'margin',
'd': 'border', // Had to use letter "d", Becuase "b" means "bottom".
't': '-top',
'b': '-bottom',
'l': '-left',
'r': '-right'
}
var str = 'p:[p], pt:[p][t], pb:[p][b], rounded-tr:[d][t][r]-radius'
var match = str.replace(/:(?<selection>.*?)(:?,)/g, (m) => formatters[m])
// var expectedOutput = {'p':'padding', 'pt':'padding-top', 'pb':'padding-bottom', 'rounded-tr': 'border-top-right-radius'}
NOTE: What I’m trying to do is, Select characters from str variable from “:” to “,” and replace it with formatters values. Then make the string an object.
Advertisement
Answer
JavaScript
[([a-z])]
JavaScript
var formatters = {
'p': 'padding',
'm': 'margin',
'd': 'border', // Had to use letter "d", Becuase "b" means "bottom".
't': '-top',
'b': '-bottom',
'l': '-left',
'r': '-right'
}
var str = 'p:[p], pt:[p][t], pb:[p][b], rounded-tr:[d][t][r]-radius'
var match = str.replace(/[([a-z])]/g, (m, p1) => formatters[p1])
console.log(match)
var expectedOutput = Object.fromEntries(match.split(', ').map(s => s.split(':')))
console.log(expectedOutput)